diff -aruN 1.0.2.src/class2.php 1.0.4.src/class2.php
--- 1.0.2.src/class2.php	2013-10-11 14:02:27.039000028 -0500
+++ 1.0.4.src/class2.php	2013-09-26 16:49:50.000000000 -0500
@@ -10,9 +10,9 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/class2.php $
-|     $Revision: 12996 $
-|     $Id: class2.php 12996 2012-10-21 08:15:31Z e107steved $
-|     $Author: e107steved $
+|     $Revision: 13098 $
+|     $Id: class2.php 13098 2013-04-11 23:28:03Z e107coders $
+|     $Author: e107coders $
 +----------------------------------------------------------------------------+
 */
 //
@@ -173,6 +173,19 @@
 {
 	$error_handler->debug = true;
 	error_reporting(E_ALL);	
+	$e107_debug = true;
+	list($majorVersion,$tmp) = explode(".",phpversion(),2);
+	
+	if($majorVersion == 4) // DEBUG ONLY - no need to translate. 
+	{
+		echo "<div style='border-radius: 10px; font-size:16px; margin:40px; padding:40px;background-color:#F2DEDE;color:#B94A48'>
+		<b>WARNING</b>: You are using PHP4 which is no longer maintained as of January 2008 and poses a high security risk if you should choose to continue to use it.<br />
+		Please ask your hosting provider or server administrator to upgrade to the latest stable version of PHP5. 
+		</div>";	
+	}
+	
+	unset($majorVersion,$tmp);
+	
 }
 
 if(isset($CLASS2_INCLUDE) && ($CLASS2_INCLUDE!=''))
diff -aruN 1.0.2.src/e107_admin/core_image.php 1.0.4.src/e107_admin/core_image.php
--- 1.0.2.src/e107_admin/core_image.php	2013-10-11 14:02:27.051000028 -0500
+++ 1.0.4.src/e107_admin/core_image.php	2013-09-26 16:49:50.000000000 -0500
@@ -10,7 +10,7 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_admin/core_image.php $
-|     $Id: core_image.php 12999 2012-10-22 20:57:24Z e107coders $
+|     $Id: core_image.php 13108 2013-05-21 21:56:04Z e107coders $
 +----------------------------------------------------------------------------+
 */
 
@@ -35,7 +35,7 @@
         'index.html' => 'd41d8cd98f00b204e9800998ecf8427e',
       ),
       'core_pg.php' => '48084454a6eaf05faca4b4afcc435c0b',
-      'core_sql.php' => '03fbdc6930452734558146cd9cf4728b',
+      'core_sql.php' => '9ad62397f9ed51969f78b5405a86f56c',
       'extended_country.php' => 'a0d285e0ed6c9db3eb10fd7d06c47af7',
     ),
     'ad_links.php' => '666a20168a0abc93ca3264648ab036be',
@@ -59,42 +59,42 @@
     'comment.php' => '64e8eb798697c404ca7d9551680606e6',
     'compact.php' => 'ec130bd289f9c97fa3aa2174b717cedc',
     'content.php' => '393ac3283845587d8c9fde0cc60afb3e',
-    'core_image.php' => 'dc82289a58a46feaaa065973681389cc',
+    'core_image.php' => 'aba76233113690f633f3f21d27603621',
     'cpage.php' => 'e89815db5a488d60cc6ed04c50c2709b',
     'credits.php' => 'd7938184f98199cad278f68167ec748a',
     'db.php' => '74139e11c3664555bdf7cf8080ab26bf',
     'db_verify.php' => 'e811e73c73dfd3d3333f12999c0b2564',
     'docs.php' => 'f664d88854f00b622ef94d5058f6d409',
-    'download.php' => '41cb7357aaa7da0c6f749750497c62aa',
-    'e107_update.php' => 'f732438744e472390a1b439465d7f0e8',
+    'download.php' => '4eb7c05ff78f9e4ce0b28302cec70b1b',
+    'e107_update.php' => 'b96d5563c08cd6ef628011dfcfb06327',
     'emoticon.php' => '4ead8f97b1ac650d03bac44687ef8732',
     'fileinspector.php' => '71450f515e8134573897e6b2fbf3d065',
     'filemanager.php' => '3c7d48fb11c607ad681414234fa6cada',
     'filetypes_.php' => 'f951037335e993337792606cc1475cec',
     'fla.php' => '1aefd4e013f1d4d38dde69f5e801d8a4',
     'footer.php' => '5ff1291325a04e4d63c72b26f5c77fbb',
-    'frontpage.php' => '878bc7ca908b88c7441a242c2baf3ae2',
+    'frontpage.php' => '87d4876811abab7223a9685b881ce175',
     'header.php' => '268095a9e4042861b4a66ac18e62b0f1',
     'image.php' => '7cdd8e6b6589e93bd18979752da4d3bd',
     'index.php' => '26700800ddf746629a55e2747b9e8e0f',
-    'lancheck.php' => '03072c0e657625407e8c5e90b4f5b7b8',
-    'language.php' => '85ede27b3860e59d1973026d2f64d579',
+    'lancheck.php' => 'da9251c3866bcb37622c4bb66a326cd3',
+    'language.php' => 'b99f646c4c507297a8770a0790f7e1b7',
     'links.php' => 'da6418d37f24dc20f15c5d7ff893a0e6',
     'mailout.php' => '5e2df321b542f6da7be9811a8c902dfb',
     'menus.php' => '0873f17e7aa314d3ae6eff79ef745a74',
     'message.php' => '5f69b7440db09e5bee30288241bdad35',
     'meta.php' => '0371c24cac6be53833b0e9feea1f5d1f',
-    'modcomment.php' => 'ccfddd5fefc102d5ec41fcbacd20b79d',
+    'modcomment.php' => '29548859dad6033701445e20a0be71b8',
     'newspost.php' => '72ae96ed60d524f179a732a24ccbeda4',
     'notify.php' => 'a99892ab1fba4f9f4496eef5de562dbc',
     'phpinfo.php' => 'f1153cdf730e14f0ed22b13806183875',
     'plugin.php' => '71646ef1775f46d4bf697ff79596697d',
-    'prefs.php' => 'aa79e9e1f4dde8569b0304ef6fddfe02',
+    'prefs.php' => '6d8376d5c4887b02ecc9fc2111f750d1',
     'review.php' => 'b7ec4170f13068a622d1ec2582c21a6f',
     'search.php' => '55b03caa1435222f0675f713dcd3dae7',
     'theme.php' => 'a3f8219bacbc8028a7ffd21c798f4f8b',
     'ugflag.php' => '6bceb5eef44d91cf2929b92fd1854432',
-    'update_routines.php' => 'd07a875e2035457de35324815cd61a7a',
+    'update_routines.php' => 'd3c844173e93f787d6cb70e5568a7c27',
     'updateadmin.php' => '3f0c55903abcffc20e8ae612c9adb3fd',
     'upload.php' => 'eb45f5e64818c2a33c32db5e737a3bcb',
     'userclass.php' => '46791da1459ae7df9b4c0adb14ccbecf',
@@ -103,7 +103,7 @@
     'users.php' => '075873a9431ba3aed9116eb6a852268d',
     'users_extended.php' => 'c788d3532e058496c4f4d0caf47e7147',
     'users_extended_predefined.php' => 'a7f1f96f56cbb0b1f4a0b71126318597',
-    'ver.php' => '29554d564c02b623a0293c88497dd4a8',
+    'ver.php' => '05f85d48e2082f065e2de736df00639c',
     'wmessage.php' => 'eae41daa06adf50107d3652e173f568d',
   ),
   $coredir['docs'] => 
@@ -270,8 +270,8 @@
         'news_shortcodes.php' => '6f543bf4f6231e3a6bdec912c6ac9dd3',
         'signup_shortcodes.php' => '85c54e5e3c3f7d90312b0f91fc2a9dab',
         'sitedown_shortcodes.php' => '2e795ea320860124c884606926e37219',
-        'user_shortcodes.php' => 'fb17c7e2754da7bc9204c87995eca7ba',
-        'usersettings_shortcodes.php' => '1b54d9e65898c7fe087a6fbdcb7e11cf',
+        'user_shortcodes.php' => 'a0f434ae6fa128b2d957de41747bc1d2',
+        'usersettings_shortcodes.php' => '00e31a02caced4d888064477aa7d664e',
       ),
       'admin_alt_nav.sc' => '17f82050dadf0bcc51f36e9bcfab58d9',
       'admin_credits.sc' => '513da741f9d89b8de701e0942f6ee0a9',
@@ -279,7 +279,7 @@
       'admin_help.sc' => '6bcd7a3280c9eb76cd0bbddb7cc4660a',
       'admin_icon.sc' => '4843c11cc5e5e14db4d5cacd537569c2',
       'admin_lang.sc' => 'c40da4411969e89998cd5030fc3f1eda',
-      'admin_latest.sc' => '9adad38428f14921a576aeee6c641c74',
+      'admin_latest.sc' => '703b4d9fdbcb549b50b7fb4af2b5596e',
       'admin_log.sc' => '9ed4a14759eb20032fb3e953b3374ce3',
       'admin_logged.sc' => 'dec16fb0a9f5485db6ca1b4955753c2e',
       'admin_logo.sc' => 'a97a3ad7bd7a505373ca5b794310a7ff',
@@ -338,7 +338,7 @@
       'wmessage.sc' => '7e6ca101862dab61e56e748431bfb561',
     ),
     'def_e107_prefs.php' => '64698742c55c8690290112e319913854',
-    'e107.css' => 'e5cfa4047831f19def7df032ef8bc830',
+    'e107.css' => '8afd391542396e6f638d5616961b50da',
     'e107.js' => '8caa1b6afcf3b9e2ab558b40de908461',
     'e_ajax.js' => 'b583773e72852158e27af8a9bba7c97f',
     'index.html' => 'd41d8cd98f00b204e9800998ecf8427e',
@@ -794,7 +794,7 @@
     'debug_handler.php' => 'd9c3b9f0793e3a495b0ced3206655b84',
     'e107_Compat_handler.php' => 'b927ac5a004fec8506e7d51b4e79a00f',
     'e107_class.php' => '5fba52d2321e3ffe9b8f0dd86a9c4776',
-    'e_parse_class.php' => 'a651d31b6c9cd0e36271018468e0740a',
+    'e_parse_class.php' => '8bb3c9f88263042ab05f8c26f488c2e8',
     'emailprint_class.php' => 'db7b892f5b103d8f3e1198ca82fba358',
     'emote.php' => 'cdf1bbc5f815f499f2c7c52340032084',
     'emote_filter.php' => '32f03814a155ab2d48517384c4f23efa',
@@ -803,16 +803,16 @@
     'file_class.php' => 'd2436ed2a026b7a90c0c7fa80d9c78c3',
     'form_handler.php' => '4906a6c2c2fe2d7a00df746d5313e8cc',
     'index.html' => 'd41d8cd98f00b204e9800998ecf8427e',
-    'language_class.php' => '21993a290543af1e43a68f96b2182170',
+    'language_class.php' => '8cbee91a977d473a265f5bfd368e0d80',
     'level_handler.php' => '51a6554eb18f8296fea49ad222a7b0e5',
-    'login.php' => '21e58440d4f92cd27f4adb97475c9afe',
+    'login.php' => 'a3a964a6bcac6da837a54f8baae64c93',
     'magpie_rss.php' => 'a04efb623cda4635cf46d9fe7c327d44',
     'mail.php' => '1d76764021e3ab599dcb42aa5280438a',
     'mail_validation_class.php' => '044d1da8377818835c55833aeae32d12',
     'message_handler.php' => '8a02bc87ac579485d1c944d96bea5325',
     'mysql_class.php' => 'f83025bc85b6c21050489e943282a5a2',
     'news_class.php' => '4823c2a7a079b39bb5cfedb04a0b1da4',
-    'notify_class.php' => 'f3fa92914faca89b09889e061ecc8014',
+    'notify_class.php' => 'e8c05e1092d0375266bb0722f5bf9189',
     'np_class.php' => '20b3571a82960caaa4ce83c5e7c72e37',
     'override_class.php' => '8c3cb1c429d3473909fec59fe9fd877b',
     'parser_functions.php' => '8f94e2d568edaaf56dc5c21e87b8fa73',
@@ -822,21 +822,21 @@
     'pcltrace.lib.php' => 'eb165fe908cc30c85975b7d35614990b',
     'pclzip.lib.php' => 'fd0b9105112482b69bfe65dc937f393a',
     'php_compatibility_handler.php' => 'bfedef3a7293b057c714f1298aa29020',
-    'plugin_class.php' => 'e66ecdc1e671c34b7c5514f566e55c15',
+    'plugin_class.php' => 'cc24099dc00c5597bb7ad2fb4e874f45',
     'pop3_class.php' => 'c2c157306f6c670ca8f085a041ea2b3a',
     'popup_handler.php' => '2b1fce18c47ee2645594ebf9a1a89170',
     'pref_class.php' => 'd054715028bcff3608e735ba1793f739',
     'preset_class.php' => 'f1e41a4a5d74153528fd4a69ecef6e41',
     'profanity_filter.php' => '7ad95608ae69c52042b0e27c96c6b293',
     'rate_class.php' => '5ab1d2b83bff6a28489d50534d69c460',
-    'ren_help.php' => '65b1f52400e41f661c9dfb119c4ce370',
+    'ren_help.php' => '944cb3b1f467077fb1891356700fa37a',
     'resize_handler.php' => 'ae885747b6f474b67b4a930c38e2e1e7',
     'search_class.php' => '584d45a8308a89c2a46e445a8d7e66e4',
-    'secure_img_handler.php' => '05fb734037c47bced5454ba2bbca0c16',
+    'secure_img_handler.php' => '5a75a6e4fa22dd31d4704258859504b1',
     'secure_img_render.php' => 'c8fb615bbcb3d22fe0e0e943e0b88d0e',
     'session_handler.php' => '6609d7029789a7e977c601fc7d80b11b',
     'shortcode_handler.php' => 'ca69b5c2084f3183d1e6e0abf7f63e7e',
-    'sitelinks_class.php' => 'ffffef3e6a782f9ace63062d68fa3ff5',
+    'sitelinks_class.php' => '14ed4325ad64b194088a89a9d9de56b5',
     'smtp.php' => 'e3802cca9a715e79e93569750c0459fc',
     'theme_handler.php' => '008360ee83ad9b0b9a39c6285d09045e',
     'traffic_class.php' => 'eef68f1158a5059ee6e0c87367ac9f97',
@@ -847,7 +847,7 @@
     'user_select_class.php' => 'e5bf8f03d63b4401b1ffbda8ef467694',
     'userclass_class.php' => '21dd7d89b44ac4618b76beb18e735b63',
     'usersession_class.php' => '582e2228f8e563a930f11199f27b019d',
-    'xml_class.php' => '1bd673cbd1eb9dec4dadaac4f24acc7a',
+    'xml_class.php' => '2d2c1a98161b6c1103be91087f204d85',
   ),
   $coredir['images'] => 
   array (
@@ -1350,7 +1350,7 @@
           'users_extended.php' => 'af8d62ff77304e40c10ac365ecb8a8a9',
           'wmessage.php' => '06be89e920e35429e90adc5f54445053',
         ),
-        'lan_admin.php' => 'f8ba7d121bbd193fcaebc1e0cb8b40e9',
+        'lan_admin.php' => '96027fcfe22b70758d477b86dcd222cf',
         'lan_admin_log.php' => 'da9d4f6af4ab0dafce14408b88e5a7ae',
         'lan_administrator.php' => '5ce2b51488cdc3cda143c2ffc1ae9301',
         'lan_banlist.php' => '260b7e19f84798e1ca6371a71db1d294',
@@ -1362,14 +1362,14 @@
         'lan_db.php' => '2dd4d09c54c7e466732ff15b59b6c1cf',
         'lan_db_verify.php' => 'a7a5f80f124cb104a6e60166f2589877',
         'lan_docs.php' => '9df02b4a6fafef4e9be2962bfeaed509',
-        'lan_download.php' => '093ed3af120115ca34ff60761d79601d',
+        'lan_download.php' => '51398b13134a8d0928f8bc9d3500d729',
         'lan_e107_update.php' => '06e75a49b55733d7e5ffa6a968113af3',
         'lan_emoticon.php' => 'c3a9e4cd7c0cab4f2cdbb4f24620b538',
         'lan_fileinspector.php' => 'aa6ec8442d1205564ecfca27becc63fa',
         'lan_filemanager.php' => 'a32d1274437c68f7038ba006af0862bb',
         'lan_fla.php' => '841218087aecbf68c9629ff0cefa490a',
         'lan_footer.php' => 'e9986abfba7458c4605b9986b915db5b',
-        'lan_frontpage.php' => 'e3a2e085730ab8e74d4dc62446bf54ff',
+        'lan_frontpage.php' => 'ab6feb90afa4a1e3c83a63830b4984f1',
         'lan_header.php' => 'fe9b76d39a11a579566670879b12bf63',
         'lan_image.php' => 'a1928159cec5539caf1d32c1b8fbac23',
         'lan_lancheck.php' => '9eea32afd605d6d03b28e064da067b61',
@@ -1479,7 +1479,7 @@
         'English.php' => 'f0ffc457c104e5db4b9e0e9bd1005a52',
       ),
       'banner_menu.php' => '6f6ba1ce4169208839b32703c4e105fd',
-      'config.php' => '2af61dd72ef3fb17b165eed6c604bc65',
+      'config.php' => 'cc0b86aa4a8a7e390ff29bf58e22164a',
     ),
     'blogcalendar_menu' => 
     array (
@@ -1490,7 +1490,7 @@
       'archive.php' => '1b2f8aa510e3e589fc36891a9589f5e8',
       'blogcalendar_menu.php' => '3d7eca25264f6fac26a07e271264c289',
       'calendar.php' => 'a8cd233f078a14f855728ea8995b4b39',
-      'config.php' => '54296584044c95e21f9f6d95c7879b39',
+      'config.php' => 'de2b13964fde863e26effc59e2170055',
       'functions.php' => '0441913d9f0759335ece338b918ee094',
       'styles.php' => '62ecc355feafc5310ad97a7df58c264b',
     ),
@@ -1520,6 +1520,7 @@
         'calendar_16.png' => 'ace8396ac74a5909b38a62835e76d9f9',
         'calendar_32.png' => 'ee297b07e04c5d54afcfd124987c7d9f',
         'icon_ec.png' => 'de31be991ae1102420a3bc76e3317045',
+        'recent_icon.png' => 'f687a542e67f6a222e59c725db94cfc4',
         'star1.png' => '22cebabc9731207092fe2242c8922ef5',
         'star2.png' => 'b50d4638fe170e7766ad473aa4039701',
         'star3.png' => '8c04fb886a6d4f6d4ab505660186d160',
@@ -1531,7 +1532,8 @@
       ),
       'languages' => 
       array (
-        'English.php' => '1822cda3cfb2ab03223cd9c5cb7a3d04',
+        'English.php' => 'fe86fd6fac8d266d4ca12c8660349cf0',
+        'English_class.php' => '243fa3ca11cc6794fe6c692c2fe759c7',
         'English_search.php' => 'fc1f68851e4c41b94e1bf1fcf9c25e10',
       ),
       'log' => 
@@ -1540,25 +1542,29 @@
       ),
       'search' => 
       array (
-        'search_parser.php' => 'b3df07f489ba4425967baec9696dd4e6',
+        'search_parser.php' => 'e56e0a58ae10bdf22b3891f0c6fe351a',
       ),
-      'admin_config.php' => 'e1b294952369db59f5ff277c320258bb',
-      'calendar.php' => '299b7b46c8bd137ac0434b6a488fc364',
-      'calendar_menu.php' => '898974d7e3c17bbb6f410fd7a9f81c36',
-      'calendar_shortcodes.php' => '073fe43cf84ba08fc672d5bf3052c679',
-      'calendar_sql.php' => 'e7f2857c7c54dac999c443283e05940c',
-      'calendar_template.php' => 'd2ee2bc496017ec083e191ba05846521',
-      'e_list.php' => '645f43cf7f01952906dbb83b8cb13cc0',
-      'e_notify.php' => 'dac7e03da18f34b014f4692de2b17532',
-      'e_rss.php' => '325d16e7d289ae41732a25ab75178c87',
-      'e_search.php' => '4ece2ee9bffc6fa603ebd479e0de0dea',
-      'ecal_class.php' => '2899fcaf7a18fa5b5b0f905a3ee37786',
-      'event.php' => '9e7ac615ce4b86b39364f5a1dbab8357',
-      'index.html' => 'd41d8cd98f00b204e9800998ecf8427e',
-      'next_event_menu.php' => 'fc2d7d490814d906f5f636729cf5d2c2',
-      'plugin.php' => '2235e731a057a00cfbc851412a6b1c30',
-      'subs_menu.php' => 'ba5b881e8344dd4986a3b0df8169beab',
-      'subscribe.php' => 'd6868e14c32ef9d79a5cb37ecbf38a39',
+      'admin_config.php' => 'bcef2ed9b9b20a91ae5eb811fe08af6d',
+      'calendar.php' => '968b2bab1411d7d99ec5163728cbfbea',
+      'calendar_menu.php' => 'fa739f2768f74999ca610f17f20d48a7',
+      'calendar_shortcodes.php' => '7827363d8062cb049230dbec27c5c48a',
+      'calendar_sql.php' => 'eb157a0523169bdbf5bff8ec787dc041',
+      'calendar_template.php' => 'f5be6956d56b7630e62e07e99a3c756e',
+      'e_bb.php' => '15c6f57433ae389e0fb825284b0761c2',
+      'e_list.php' => 'd4e5264b10bf41cd600d8c00a35fd2ca',
+      'e_notify.php' => '6207e85e07734d4d7057c9b80eae2378',
+      'e_rss.php' => 'e6287903fcecf8c1c40a4a0c42eddf35',
+      'e_search.php' => 'f4a7e61f57a2a6ea6d3d9b7b79a27783',
+      'ec_mailout_template.php' => '194100ea6a81c681d0668154723041d3',
+      'ec_pf_page.php' => '752f0ac9e764d29f5d2234308c234b99',
+      'ec_pf_template.php' => '416345f4bf1a9092f499ede197dee35e',
+      'ecal_class.php' => '14b49ba2fb67c8d5f3f37bc80bed6721',
+      'event.php' => '26fabb24969a02d80e80873315d9c67c',
+      'index.html' => 'd41d8cd98f00b204e9800998ecf8427e',
+      'next_event_menu.php' => '24a36c6e725183d91293896b35292efe',
+      'plugin.php' => '6a7b53d558e720c5f35435b44070d7c2',
+      'subs_menu.php' => 'c2cf57643410c50360854a58d211a2eb',
+      'subscribe.php' => '38c3e202006b1ea340880d82d891b643',
     ),
     'chatbox_menu' => 
     array (
@@ -1582,10 +1588,10 @@
         'search_advanced.php' => '9a61182b7cfa55f03877f318f168063e',
         'search_parser.php' => 'b13719aa6145bdefa5b7af2d11c8b885',
       ),
-      'admin_chatbox.php' => 'a4b459c321bd8bfbf16262354cce4d7b',
-      'chat.php' => '7fcfad2a7f3f6a2cb974d688c0eafb09',
+      'admin_chatbox.php' => 'b04126b1ccb3dff3bb046d85ad3dbfb0',
+      'chat.php' => 'b743c02612f1f71ef9e5cb20b57b24ef',
       'chat_template.php' => '14c2ebf62352cf10f2b0b83e100ae856',
-      'chatbox_menu.php' => 'b77eabb1a932a241e60d3893cc254006',
+      'chatbox_menu.php' => '9ece27795eb7a322bdc9229148823205',
       'chatbox_sql.php' => '8f0b99b08c14602234943d11d61c482e',
       'e_list.php' => '11fde3fe8b58bec52bc6220053498509',
       'e_notify.php' => '0a2933c585217bdbe973704be60775a6',
@@ -1641,7 +1647,7 @@
         'content_db_class.php' => '36e1239b945ea5f23868f66560d88ae7',
         'content_defines.php' => '17705ead3b96dabdd746a32c8f29935f',
         'content_form_class.php' => 'eb872cc9322094ec93915a1bd92e7c20',
-        'content_preset.php' => 'f3061b1451c85ffa473bf5520d41b49a',
+        'content_preset.php' => 'd8c6072a5b07fa53d42cf2a7afc81065',
       ),
       'images' => 
       array (
@@ -1758,7 +1764,7 @@
         'content_submit_type_template.php' => '58eb0863e060770ef4c59d28f51b8ccb',
         'content_type_template.php' => '5018177cc8fde34aeba62a2b04887322',
       ),
-      'admin_content_config.php' => '412c40999f0d23c299508d0dc9ed03c4',
+      'admin_content_config.php' => 'bde48589408665dba829c2e4e6a367be',
       'content.js' => 'd41d8cd98f00b204e9800998ecf8427e',
       'content.php' => 'fce17190563f678c19c24c2f402ae810',
       'content_manager.php' => '3041be3c78fcbd9d47eec36681b60d0e',
@@ -1804,7 +1810,7 @@
         'centered.php' => '6594f376fb097c2d375055ad0477504a',
         'default.php' => '6fba602f32ebb0366840f45bac178b75',
       ),
-      'admin_config.php' => '98c7e14afe71526f246128f66c01a21d',
+      'admin_config.php' => '29bb89af0840836a7423bf00c4928806',
       'e_rss.php' => 'e3b277cca6f5262dcee948434aacfc5e',
       'featurebox.php' => 'd2bae775a6f99daa1237d86d7c6651e5',
       'plugin.php' => '956d518af8bf120f2fe041c7e6e9a350',
@@ -1967,7 +1973,7 @@
       'e_search.php' => 'f0c6eabebb2359afd8bc4557bbc3dd02',
       'e_status.php' => 'e707e64a960612d443e16906faaf0e22',
       'forum.php' => 'c953a361a1497f246d994a331569ea68',
-      'forum_admin.php' => 'b1e40e6d0d964ab7c726958d0bc945ab',
+      'forum_admin.php' => '60a8811e8f531a5fc554115aeebcd461',
       'forum_class.php' => '73b910e41a07ad0aed085fb4e119384e',
       'forum_conf.php' => '2e9e8b1060173d5c1f376f5a1ba3b3ca',
       'forum_mod.php' => 'd32054b1725ca2c28e5995917093b37b',
@@ -1998,7 +2004,7 @@
       array (
         'gsitemap_English.php' => '3ef04f9ce48cf9bd6ea602525ee98465',
       ),
-      'admin_config.php' => '0ad79a94c36d8a5812ce02d08fd1ad92',
+      'admin_config.php' => 'acf9c8a43599f8d705582f9e1e27800f',
       'gsitemap_sql.php' => '1b113956d7964d2b44a027cb8bcc91bb',
       'plugin.php' => '8b1ab5750ee9bba949ba6b52bd48fe03',
     ),
@@ -2053,7 +2059,7 @@
         'search_comments.php' => 'f887861124deb8c3b087359cb9f3210c',
         'search_parser.php' => '20039d017a7341b7902a80a44dd0df7f',
       ),
-      'admin_linkspage_config.php' => '6d6458eeff9598e31a49f0290cf58e6c',
+      'admin_linkspage_config.php' => 'b3c00dc6750e6c7f382b4d707d977552',
       'e_comment.php' => '13b0aa38e21d08a535276a7526cedde2',
       'e_frontpage.php' => 'afdc379a04c4918247d26559dfc4d4e2',
       'e_help.php' => '8358d0abfac6d1ed475bfca52a259b06',
@@ -2083,7 +2089,7 @@
       array (
         'English.php' => 'cdd4262dfe21daa49d2829f67c59a0de',
       ),
-      'admin_config.php' => 'fb96cbde42a8d6ae8e7d41f84f5cea1c',
+      'admin_config.php' => '5c41044989e164db0b6a788578817ccb',
       'linkwords.php' => '4262c8db55367ad1392b8dbeee11733e',
       'linkwords_sql.php' => 'a846d028cfeeb778e7db62b1799962a1',
       'plugin.php' => 'ea8b844abebf6cad40a90dd1cd480ef6',
@@ -2120,7 +2126,7 @@
         'list_members.php' => 'f2cec9a4125081502c309f794f72dc1b',
         'list_news.php' => '7faa1d6728ff1e692aa834ac4027c4e0',
       ),
-      'admin_list_config.php' => '02d59542009fc531bd2cd803f02eac32',
+      'admin_list_config.php' => '22722369f6221dc15c8ac2e581f611a6',
       'list.php' => 'd944b381d79ba194ed8f3e816c07dfb7',
       'list_class.php' => '0c8d2022c8cdff496c443a987fdc6144',
       'list_new_menu.php' => 'b47f1cb3fe0c97dd00635a45375e4acb',
@@ -2231,7 +2237,7 @@
       array (
         'null.txt' => 'd41d8cd98f00b204e9800998ecf8427e',
       ),
-      'admin_config.php' => 'f5b386d9f28260b3c6bfaa8d5ab91ddd',
+      'admin_config.php' => '0b4c21b742f41f54b132a58ea8ea12ca',
       'consolidate.php' => 'e4a7d8cc1f8be71c7b49e46437c4adcd',
       'e_meta.php' => 'c7c1bff20fb308d2461bf3bf9ac89d45',
       'log.php' => 'bdbc80558b0d01adb5e7bfcd7476c017',
@@ -2249,7 +2255,7 @@
         'English.php' => '05744e195917786eca87aa6974754776',
       ),
       'config.php' => '73b9b2256e5e2b6cd1086b659bf46991',
-      'login_menu.php' => 'e6fecb0ad4389d44d3b49f6a26f1321d',
+      'login_menu.php' => '393adf5c33aee1d337e0ff7404e645e2',
       'login_menu_shortcodes.php' => 'ae457a306c7f6e9a7313077dbf6437c5',
       'login_menu_template.php' => 'a284e126919afb2e92b22cdb8c2770b2',
     ),
@@ -2267,7 +2273,7 @@
       ),
       'admin_config.php' => '443dff595b79b2037a58658302bf6bf1',
       'newforumposts.sc' => '29784d1f53f650fa7327e367878217d3',
-      'newforumposts_main.php' => '782a991a03f1defe81ad45fe5bdc4ebe',
+      'newforumposts_main.php' => '102a8429403ef9164025ab3bd9002bf8',
       'plugin.php' => 'd3822b3a28c79a4209a4851882e1dbeb',
     ),
     'newsfeed' => 
@@ -2287,7 +2293,7 @@
         'newsfeed_menu_template.php' => '6614764424c4d822ac155dfc5cec492f',
         'newsfeed_template.php' => '42bc8c4d66f1ccc75872e751c6d5d581',
       ),
-      'admin_config.php' => 'eecd350cffde4af23cc1a7366b5e949c',
+      'admin_config.php' => 'f7286d1d43f02385fc2dcce16aacdc18',
       'e_frontpage.php' => 'e382f0f562128593eb6f92ec404fa6e3',
       'e_help.php' => '3127973c339216ff9f080cc5edc51474',
       'newsfeed.php' => 'e4d7d6b2a4c3da4d0f1f5ab6d023ffeb',
@@ -2306,7 +2312,7 @@
       array (
         'English.php' => '88e3e4424f19560794407bcee6fa3e5b',
       ),
-      'admin_config.php' => '428d4dc89338733129a2fce35ea9bdf3',
+      'admin_config.php' => '798b506a2988ac8860914035b5b526d6',
       'newsletter_menu.php' => 'f00e460efd1269ce59d751add07fc9c7',
       'plugin.php' => '5ee1421f28cd726ad28757e367c52989',
     ),
@@ -2388,7 +2394,7 @@
       array (
         'English.php' => 'c74373c9f5282591ecb0278fe6b75be5',
       ),
-      'admin_pdf_config.php' => 'd2d40ad601eb21392dd53db414d0c7ea',
+      'admin_pdf_config.php' => '294fa69a4d01ad7ba44653843bf22a17',
       'e107pdf.php' => '042cea8d06e6cbd8d5308f7e4bac40f7',
       'fpdf.css' => '35c07d5049ac6e55b8ab473c6dc38bf0',
       'fpdf.php' => 'da7385d29345f1c12fe85b6cacf5e905',
@@ -2430,7 +2436,7 @@
       'plugin.php' => 'b7826793483f664065dff50d24f531b9',
       'pm.php' => '78e6fcfb4199245e645ae1d366e8657a',
       'pm_class.php' => '96ed74be4d9eb87e875fe2dd658124ad',
-      'pm_conf.php' => 'd6361a48ae2f9b3f30c38db472af1667',
+      'pm_conf.php' => 'd51de4993093a261c17321b21a1631f2',
       'pm_default.php' => 'b7981b895e3afc6bc95a2198f0c40423',
       'pm_func.php' => '4bb013a88ec8427ff15a4465709ac74f',
       'pm_notes.txt' => 'df26332907da1f35c4731d8893aea23e',
@@ -2464,7 +2470,7 @@
       array (
         'poll_template.php' => '4f3402e0f6fbce9905130d58fdfb6381',
       ),
-      'admin_config.php' => 'c9cc387b19cb5564389aeac876fb629c',
+      'admin_config.php' => 'cb609070e3c47743618b19fdc981219b',
       'oldpolls.php' => 'fe6a2ec02800ba66c32cb75989d2d673',
       'plugin.php' => 'e5d97ec3cdef45310fbe7f782cb18b52',
       'poll.php' => 'ae1668754554ee22e5d8034307f83dc4',
@@ -2482,7 +2488,7 @@
       array (
         'English.php' => 'c30f93fc0fa6b31b8c582385d0334fd3',
       ),
-      'powered_by_menu.php' => 'ab5640cdb886e393dc6c551e54019369',
+      'powered_by_menu.php' => '277df2323d9f2eb5eeef7aff22d67699',
     ),
     'rss_menu' => 
     array (
@@ -2499,7 +2505,7 @@
       array (
         'English.php' => '7b08065b4fbdf50f5a4029261da3745c',
       ),
-      'admin_prefs.php' => '582724f64ea297983075a72cbe1e1082',
+      'admin_prefs.php' => '0a2391687f9dee02c77d7bb6f09b1dda',
       'e_meta.php' => '6fea117a6384ef5b5f6961c9bbb0b9a3',
       'plugin.php' => 'cb3db0a83a7ed75cff7023a85d294c3c',
       'rss.php' => 'e9b5d4168356874041c4fbba24bc80f7',
@@ -2540,7 +2546,7 @@
       array (
         'English.php' => 'faa2ba88588a8142bc39a7312c942981',
       ),
-      'admin_config.php' => '089c10ff6fd21d4e26ed4a5621677001',
+      'admin_config.php' => 'c9fce0d1d98294077ba44033f5e2cfbd',
       'e_meta.php' => '6ed50a8d0f26319e064e9cded604f5fa',
       'modtrackback.php' => '0d65e174ffa687c8381a6c98314be491',
       'plugin.php' => '6ebb042e4410b11dac4d051379fb46f6',
@@ -2553,7 +2559,7 @@
       array (
         'English.php' => 'dfec891322965a34ef5124a129e18d88',
       ),
-      'config.php' => 'e82d3bf28f3762cb42163b1670015e51',
+      'config.php' => '7d1da1fc8df6faf1e699f03b85879299',
       'tree_menu.php' => 'aaba586aba1546a0d1f5d80198564d6f',
     ),
     'userlanguage_menu' => 
@@ -2570,8 +2576,8 @@
       array (
         'English.php' => 'cee12f306f38b237a4ee461a1346db5c',
       ),
-      'config.php' => '62ab2ca796fbd49eb22448cc9460727e',
-      'usertheme_menu.php' => 'edbe34c4b5ed789906bab1093ac1644d',
+      'config.php' => '757901f3c97b8770396271f669cc1105',
+      'usertheme_menu.php' => 'a978c6bf9e91bdc9495b81d58f88b0b8',
     ),
     'index.html' => 'd41d8cd98f00b204e9800998ecf8427e',
   ),
@@ -2639,7 +2645,7 @@
         'reply_new_thread.png' => '62bf421db333810f70c415c7c59c6b15',
       ),
       'admin_alt_nav.sc' => '1120fe1616ab704e2fccde0873adfb25',
-      'admin_style.css' => 'e9c8dee3528b17a22d861bab02add4f7',
+      'admin_style.css' => '22f3be4a3afe9e499cae1b36a7131b74',
       'admin_template.php' => 'b5e068b1fdb54ed15fe4c18d1f54cd78',
       'calendar_template.php' => '5269c1c83089a62d0d94a01705ecb6dc',
       'comment_menu_template.php' => '0b860a1796a979a0dcafb7407899f309',
@@ -3110,7 +3116,7 @@
       'contact_template.php' => 'e5e3c69021c04c13918d4d166b642728',
       'download_template.php' => 'aec0e423eba7c807f677acd40dbf8314',
       'email_template.php' => '41869d37035cb352d450090e0e0237d0',
-      'footer_default.php' => '174b457ee6db851b49035a8a8446a0aa',
+      'footer_default.php' => '2eac0da3f5d248ee5672b571b46ae635',
       'fpw_template.php' => '1431ea272c9ff92a6263f0f229aafeff',
       'header_default.php' => '3605ae5a560740666ec179b98a57a3f6',
       'index.html' => 'd41d8cd98f00b204e9800998ecf8427e',
@@ -3158,7 +3164,7 @@
   ),
   'article.php' => '99ff41edab6c0488b360b34db5264b11',
   'banner.php' => '1103034d2d9220f93aa7511952c9c79a',
-  'class2.php' => '07f9b17b214d779dac3b5f5e1b6cedad',
+  'class2.php' => '57a282e801bceef5b965ab338ed9a36b',
   'comment.php' => '8ac267b76a39a29f183041e988efd33b',
   'contact.php' => 'ea2c1d44da9b4d1963ca5d79b5e6f21b',
   'content.php' => 'f7c62efce19e34901f7d3366cd3855ce',
@@ -3177,2808 +3183,24 @@
   'links.php' => 'bed206fc2abe8f1307ef4db3b7fee63e',
   'login.php' => 'd3864019b3d0d21446f0006a32ce1ebe',
   'membersonly.php' => '9ddbd174e30439869f144bb7dc41f677',
-  'news.php' => '8d4c38ec568c7edc3b0619e4258cec79',
+  'news.php' => 'fca4f8a39134c0ac10bed787c09f030d',
   'online.php' => 'dedde4aafef396cbc2f145fb3f6ba020',
   'page.php' => '890ebaf60b434685178082e720db3744',
   'print.php' => 'ff80b3a7061f43d2d17a87339c20abcd',
   'rate.php' => '6a28db191f8bb1ebca3b060d867647eb',
   'request.php' => '70a5ff9866c53204cab4077a87bdd90e',
   'search.php' => '4e40a72859ba224230d6be5081d34dc4',
-  'signup.php' => 'bb0a044f05d77768f05d3ddedf0b0a34',
+  'signup.php' => '2c1d92e192a9f50b569879805e350fcb',
   'sitedown.php' => 'b4ed625d7fccd4bac6cb0564af53e549',
   'subcontent.php' => '13134ebbb9c45234963500e05d9e692f',
   'submitnews.php' => 'ce1763c73637a115b0a77d788f62ae62',
-  'top.php' => '3c867538a84f198070d95fcd0e8acf61',
+  'top.php' => 'bc120cf5111c4c23d0e16de62c4106e5',
   'upload.php' => 'badeb3149719c8cff9e0a64f823fa873',
   'user.php' => '53b6cc32a2d529bf413df24d531b9854',
   'userposts.php' => '9f2d0dc13036ab8daa71ff8d07962d90',
   'usersettings.php' => '427c15362380e70d04b8ddaa8c67742f',
 );
 
-$deprecated_image = array (
-  $coredir['admin'] => 
-  array (
-    'help' => 
-    array (
-      'administrator.php' => '8d58e249f4c37c48ef3d0fb600db4c8f',
-      'article.php' => '5eaec68b84cbbcbb34f2d970bea1c0b3',
-      'banlist.php' => 'b841446435a2cb171968dafa9042444a',
-      'cache.php' => '32619118102a53828749f6f5198377bb',
-      'chatbox.php' => '64da6bf8536ba4a5f5fbdce91aef02ea',
-      'content.php' => '9acd47fab88f17202b907dda61977762',
-      'custommenu.php' => '23def1d72ae7dac360df9c3f710fdf55',
-      'download.php' => 'd48ddda1acd7a6efe0de0787d6988a20',
-      'downloads.php' => 'eb3a2a4d6c89ab2372d88c2999e8cd2a',
-      'emoticon.php' => 'a1e9636fd7af1573aa4ba481b9c313b3',
-      'filemanager.php' => '60c3a9f7c51c1c9d36c575508711f871',
-      'forum.php' => 'bf299e990db850f86cdbcd42b9b3fd9c',
-      'frontpage.php' => '3416ed1177991400b4aa82b10f91007d',
-      'index.html' => 'd41d8cd98f00b204e9800998ecf8427e',
-      'link_category.php' => '4f3852c20f1ef019d22b5760b5e063ae',
-      'links.php' => '566b6088a236cb2c093b425ec9309d66',
-      'list_menu_conf.php' => '44e687a1ff5df331a63ad6a4892eeeab',
-      'log.php' => 'bdb15ca1b175923e93785220f7e5821c',
-      'menus.php' => 'e89bffe7bc21b21201a2d768561c473b',
-      'menus2.php' => 'ef44b977037e87afeb228279c78e3bb3',
-      'meta.php' => '29760d902f4aa3dfb3881842664940e7',
-      'news_category.php' => 'fc0954aaa4fff8f878641c4ad707f08a',
-      'newsfeed.php' => 'a13915c726c3b5dec2b8899c7422db81',
-      'newspost.php' => 'bb22746bfbbdfdd8d7e780105ef9e854',
-      'poll.php' => '041fc9b4489b9d467acbba15cbc5b2df',
-      'review.php' => 'cf0bf878836e63bb7f12bbd978c4d7f9',
-      'ugflag.php' => '309b077d78f56125ce2cbceb056e537f',
-      'updateadmin.php' => '2a51d30073923c6ca0128d63f71dae5a',
-      'userclass2.php' => 'a60b4f7f2c72660f46b34307bfdf39c2',
-      'users.php' => 'df0e3b9a6b200f37225fae370b5c198d',
-      'wmessage.php' => '6eb398815b8165d5ffef65fd42a7922a',
-    ),
-    'htmlarea' => 
-    array (
-      'images' => 
-      array (
-        'ed_about.gif' => '8892c7e4a559a6bb1b50e9009ddb1665',
-        'ed_align_center.gif' => 'f3c560b8cd085dd249e4632107ad5e02',
-        'ed_align_justify.gif' => 'e4fd3728dc374e0cfc24b07ea6be90fc',
-        'ed_align_left.gif' => '3301e69399d07346067114647bb3dc33',
-        'ed_align_right.gif' => '00950f054f71e69d9c30378e76bc12a2',
-        'ed_blank.gif' => 'ca710933239efd41bbf4d1a3231240f4',
-        'ed_charmap.gif' => 'cbdbb8c0c3a4ec3d285d1b45eaafd08b',
-        'ed_color_bg.gif' => 'cc74713d087b0d0a1200016a1e197100',
-        'ed_color_fg.gif' => '3640d2e5ca79aeebd72414c0b85fa3df',
-        'ed_copy.gif' => '684b277b164596eca2e53c750d8b5b04',
-        'ed_custom.gif' => '1ccd6155d74e1b19b4651994219a6615',
-        'ed_cut.gif' => '220ce8bbe529bf3a092a9643e936bdd7',
-        'ed_delete.gif' => '573745a746bf300916c73a19d0819ab2',
-        'ed_format_bold.gif' => '520b80446acc7ff6021574295e0b2a81',
-        'ed_format_italic.gif' => '944c91acc59d24f9769eca617ff9239d',
-        'ed_format_strike.gif' => '1ba752cc9729f54bd87efe636dca247b',
-        'ed_format_sub.gif' => 'f63ce7a2b86ffcf07dcbddc0aac9b9d7',
-        'ed_format_sup.gif' => '7d1ab42fd5003dc07c1a17d6eac514d5',
-        'ed_format_underline.gif' => '468b978544e8811fa3b0deef30741efd',
-        'ed_help.gif' => 'f652d29123b5a2f24d70d9da3c9dc653',
-        'ed_hr.gif' => 'ae6fa428e1f6cda1008a7f608825f6da',
-        'ed_html.gif' => '9b32f161406de6bae7884a3391798042',
-        'ed_image.gif' => '9a1f8c6fbcfb03efe900b90f41851792',
-        'ed_indent_less.gif' => '46c4a489b08646a7f110c360b61be3bc',
-        'ed_indent_more.gif' => '77506085135c4008d62cca50ad3feb20',
-        'ed_link.gif' => 'adfb4f124a9cfcbaf1d5f2dde6194641',
-        'ed_list_bullet.gif' => '1a49be730188f40a7878ec8b9cd03b06',
-        'ed_list_num.gif' => '282b0624844fe048e7f8d180c254c2df',
-        'ed_redo.gif' => 'e8f409bcd2a561274505fa79902d175f',
-        'ed_undo.gif' => '9c6818077df01f6aa3b0113b0c195a88',
-        'fullscreen_maximize.gif' => '361a5915db890026ed4280bc518e502f',
-        'fullscreen_minimize.gif' => '08a51cc59af4c9c1e1cc77290f5f26ad',
-        'insert_table.gif' => 'cc65036d9589d6183342e2eed294ff57',
-      ),
-      'popups' => 
-      array (
-        'about.html' => 'd66d35b6344ded6911fed96b61bd2cb9',
-        'blank.html' => 'c83301425b2ad1d496473a5ff3d9ecca',
-        'custom2.html' => '2ccb932916cc2696d5d1952d4d36eb13',
-        'editor_help.html' => '7ca29d18f18c0040db5c3af15254d0e8',
-        'fullscreen.html' => 'ec725d362b4bb338111e43e064faef37',
-        'insert_image.html' => '8a06b1d93a6115f1ecc12ec2caf5749f',
-        'insert_table.html' => '1562c8c3b40afcef1800e6b753f6b895',
-        'old-fullscreen.html' => '0daa59e83fdb6b487c6502c5e6a2d42d',
-        'old_insert_image.html' => '9482a4fbbea5a45558f2faaf83291f09',
-        'popup.js' => '1fbb9698cd184cd3b7f61aa9ca0a6d17',
-        'select_color.html' => 'd76a6a92c9660aeeee17fc3fa25fa184',
-      ),
-      'dialog.js' => '45236d35186f82dbc2fab623f0406f60',
-      'htmlarea-lang-en.js' => 'c512cf5dbbf3f3194ea314bdf4710c55',
-      'htmlarea.css' => '6113c65492628800a361ccef432b829b',
-      'htmlarea.js' => 'e33f5031dffdd23c855a054bda135502',
-      'index.php' => '0ec862dc66ce060cc098cfd977709c9e',
-      'license.txt' => '0cb5443ecf825c27b9e488adae9ac8b2',
-    ),
-    'includes' => 
-    array (
-    ),
-    'sql' => 
-    array (
-      'db_update' => 
-      array (
-        'table_update_603_rev6.php' => '8d86e635ec98ef9b86f3ee8d442f7402',
-        'table_update_603_to_604.php' => 'b2e91946ffe089e60f26857c2065f352',
-        'table_update_611_to_612.php' => 'ebc6d228d4f32dc709337d173e8e3e92',
-      ),
-    ),
-    'chatbox.php' => '7e75a4fc9d8a70280cf3ea38a6957039',
-    'custommenu.php' => 'a1bcab76003c2d7a26075c6dde92a2ea',
-    'downloadOLD.php' => 'da13cde41db327d1a251bd02b4f11974',
-    'download_.php' => '17e197e6094df8c6f70c9d6ee5d99cb5',
-    'download_category.php' => '6f81e7b0d0fd7b8e1278bab935bcb431',
-    'forum.php' => '8fcecb7939d0e2f3776602f12f256d41',
-    'forum_conf.php' => '59104f7a4e953f4935c82eaedc060931',
-    'header_links.php' => '89b428327e178a5ec1cd590a8a5a5eea',
-    'index.html' => 'd41d8cd98f00b204e9800998ecf8427e',
-    'link_category.php' => 'a037103b28a327d7f68b179a6430e0cc',
-    'linksOLD.php' => '97ea4f0610899f6f3892d4bf54f8fc57',
-    'log.php' => '79f63402eb374a1756984f60511d13fd',
-    'news_category.php' => 'f797eba058a27b2391eb25bd3cc185d9',
-    'newsfeed.php' => '9b0566edc1f49895997f39a07b9037b1',
-    'poll.php' => 'a2038a1b5a5f03b243ecd07ee5085181',
-    'submenusgen.php' => 'cbb94c39c1a0640983700119686402ac',
-    'submitnews.php' => '684139e60a097eb04be9767c49dd9985',
-    'theme_prev.php' => '386420f2c1c731f23c7df91926443e72',
-  ),
-  $coredir['docs'] => 
-  array (
-    'help' => 
-    array (
-      'English' => 
-      array (
-        'Articles' => '8bdb338ca53cd252f0d3f3a7ad511520',
-        'Content' => '770d62fe3fa3c984956884553e85af2e',
-      ),
-      'Administrators' => 'fde3f611512ac789609c80fc8a6f3609',
-      'Articles' => 'b59d04443bec2260d4bed4ef013c94b4',
-      'BBCode' => '33451916e62615ddeefb30103f570831',
-      'Banlist' => '83a4c139037713c03d0999e28335c852',
-      'Banners' => 'a1c096485e789b14c720b7c73b4ea7a2',
-      'Cache' => '7fc85b1d45b8d7f3cf7b4866d3d37aa8',
-      'Chatbox' => '5fa17c49db4bfef93729d2dac1fcc162',
-      'Classes' => 'ea8b68f265aef007a9636443b7da3dc5',
-      'Content' => '770d62fe3fa3c984956884553e85af2e',
-      'Downloads' => '37399eb226ad7d1d729f68f65efc7b00',
-      'Emoticons' => '14a0d74aea591e0f8d82577aff8fe979',
-      'Errors' => '46381d88a2326ff760562fea385b2fd0',
-      'Forums' => 'a2266bd5b818e1cf30168ac9053b7a59',
-      'Front_Page' => '7df90a02713ecf9d6ff1c7f7f77cbcb0',
-      'Help!' => 'cbbb887146e203d6e2cae27b17db7ff8',
-      'Links' => '320eb08defa1360070a4f0c062e5fc84',
-      'Maintainance' => 'cc818c06e047bba0e2c2349e954cfaf0',
-      'Menus' => '44a53801c18ad52aa9e50c3b4fbfe241',
-      'News' => 'e5ec6c8137c00916343f8f4f5084bfe7',
-      'Preferences' => 'a089239dbffa47eba773c3c4f878d4b3',
-      'Uploads' => '3db7011da6342cf030bb03f011706bb2',
-      'Users' => 'd64be592aae221b66ca4d33b69056e7f',
-      'Welcome_Message' => 'a3a7b26428d35d5ebb520e16ac6204da',
-    ),
-    'ChangeLog_615.txt' => '0e4d3787cd2a3faf41c45d3b70311295',
-  ),
-  $coredir['files'] => 
-  array (
-    'backend' => 
-    array (
-      'news.txt' => 'd41d8cd98f00b204e9800998ecf8427e',
-      'news.xml' => 'd41d8cd98f00b204e9800998ecf8427e',
-    ),
-    'bbcode' => 
-    array (
-    ),
-    'cache' => 
-    array (
-    ),
-    'downloadimages' => 
-    array (
-    ),
-    'downloads' => 
-    array (
-    ),
-    'downloadthumbs' => 
-    array (
-    ),
-    'images' => 
-    array (
-    ),
-    'import' => 
-    array (
-    ),
-    'misc' => 
-    array (
-    ),
-    'public' => 
-    array (
-      'avatars' => 
-      array (
-        'null.txt' => 'd41d8cd98f00b204e9800998ecf8427e',
-      ),
-    ),
-    'resetcore' => 
-    array (
-    ),
-    'shortcode' => 
-    array (
-      'batch' => 
-      array (
-      ),
-    ),
-    'default.css' => '54d8e232fe73969b593f71df2afd6995',
-    'style.css' => 'd62b27257e32cc08296930879a6df478',
-    'user.js' => 'd41d8cd98f00b204e9800998ecf8427e',
-  ),
-  $coredir['handlers'] => 
-  array (
-    'calendar' => 
-    array (
-      'language' => 
-      array (
-      ),
-    ),
-    'htmlarea' => 
-    array (
-      'examples' => 
-      array (
-        '2-areas.cgi' => 'c26028a87777a45e8792cf9939cd5464',
-        '2-areas.html' => 'df7d45c30d0825f9c450f38c5af60508',
-        'character_map.html' => 'b064eb5c9586d743ec86ac54370ac61f',
-        'context-menu.html' => 'fc0226d993ec92c2a9c98fb06002bda1',
-        'core.html' => 'c0349e4a3810a822cbb01ce26019afcc',
-        'css.html' => '90120b460e62b056e46a443d869b104f',
-        'custom.css' => 'd841b6b070f3ae8e67e196ff2ee6c5fe',
-        'dynamic.css' => '402fa7e28e0b0c2035520676cc4ff581',
-        'dynamic_css.html' => '3bcdb4239b896d49ba2d32c329b54e74',
-        'empty.html' => '4404eb82dbf03fd2825e0fcce3413769',
-        'full-page.html' => '588ce9c643c645eb2b6cbe1dbbfc09fe',
-        'fully-loaded.html' => '5d7c6ca8fa4927dbbb40fc604d856922',
-        'images.html' => '9553c5838b7c90a33a0401084a7a0c46',
-        'index.html' => 'e8fdc4fc45c34917aff59da5c7ff001d',
-        'list-type.html' => '25df168ea209a4be5ea42f559683b96e',
-        'pieng.png' => 'f8915fe3b221dd044a93782fc0d2f5f0',
-        'remove-font-tags.html' => 'a0caff2e51ec7a7aad6e4cf2f6d12dd4',
-        'spell-checker.html' => 'e50a13ee08206801e968270c72adac0b',
-        'table-operations.html' => '3e14d124b11047df9e7ad3ef92c932cc',
-        'test.cgi' => 'b6b0615fc550bfec4c5e5adb1c69cc6a',
-      ),
-      'images' => 
-      array (
-        'ed_about.gif' => 'e0c3a2d4938e92642abe88319c37a019',
-        'ed_align_center.gif' => '419a7cac054b4b2dff1b9eab7a45b747',
-        'ed_align_justify.gif' => '9c31aa4411277ca29c3419f8df7b8b1d',
-        'ed_align_left.gif' => '9c22c00f4c67931140be15e59db6d517',
-        'ed_align_right.gif' => '93862fdc7d08142fa419cbd0f6c66213',
-        'ed_blank.gif' => '020874e9edcbcd0b514d1b30f14b18bb',
-        'ed_charmap.gif' => 'a897a03f66ec432ed8e7cd26c3b5f88e',
-        'ed_color_bg.gif' => 'c6e286fdfa3ba31ebed7f18b0ecc75b4',
-        'ed_color_fg.gif' => 'c72e9bc079196ed7b089afa9593cd8a9',
-        'ed_copy.gif' => 'cf622962955f521c5ae576797d1032f7',
-        'ed_custom.gif' => 'e7b27a6808e66a8a301cbaf64eb8825a',
-        'ed_cut.gif' => 'f512b15c53dea427a6173023b8945a87',
-        'ed_delete.gif' => '79ac46c129cf5dc8b21c5c0d42151831',
-        'ed_format_bold.gif' => 'f4f614c2cb06763fc3063c93f07cf415',
-        'ed_format_italic.gif' => 'a800ad94ba742d72099073f0faeb2004',
-        'ed_format_strike.gif' => '9aa5a079df34a4eedcc5c716c9386a74',
-        'ed_format_sub.gif' => 'b16263bc5ca08886c978db99f4feea40',
-        'ed_format_sup.gif' => 'cad7d563b915d56d38cb0ee680191a59',
-        'ed_format_underline.gif' => '505a23f166dcb38cea34af16ce4dbb5c',
-        'ed_help.gif' => 'e7fce3f8566622f3add66b5255948397',
-        'ed_hr.gif' => 'ff70dd8f9cefacf143e7396dcf4f58b6',
-        'ed_html.gif' => 'fa6e7d1b61493b607b61bd71bf1f36d5',
-        'ed_image.gif' => '4ab7d43a45532267df831d0a8fc34d8c',
-        'ed_indent_less.gif' => '850310807053467daa42cc8bba2fcbac',
-        'ed_indent_more.gif' => '3835d1bdd22a011a5b22e23fcce75e9e',
-        'ed_left_to_right.gif' => 'a0f9ecd9a146094c0265df9ab57e1dce',
-        'ed_link.gif' => 'f04cb59f80844ac38e9ce9f2698ce7f9',
-        'ed_list_bullet.gif' => '236b4559afbfec1d238a939b65ea9d0b',
-        'ed_list_num.gif' => '48d3e7c2c5826371be37b608d33af15a',
-        'ed_paste.gif' => '81e1666c11b6def84943d3fab3aeedfa',
-        'ed_print.gif' => '9bd797173a2fa37bedeeabd5d47e25cc',
-        'ed_redo.gif' => 'e9e8c51b9f00093a3f303f0bf2ce7e05',
-        'ed_right_to_left.gif' => 'c644f85dfa635e265e6a8da8c7c06227',
-        'ed_rmformat.gif' => '287498e569fb9a902e7cfc8dd634e449',
-        'ed_save.gif' => '07ad6426b48b0f86cf0985a599c7ee95',
-        'ed_save.png' => '0a17a62b278ba3554338d254c4e9af60',
-        'ed_show_border.gif' => 'ae228363e7079002dd18dffad8d66c62',
-        'ed_splitcel.gif' => '2c04da7e1c53d5c63aff4f80e5023b22',
-        'ed_undo.gif' => 'b9ba819ac9e7700ca0a876dba2b81c39',
-        'fullscreen_maximize.gif' => '2118040d93941f64f7a2096b2370d7c2',
-        'fullscreen_minimize.gif' => '816c96e44ded878836292b80da38ac1b',
-        'insert_table.gif' => '3a985dd81474a602d4318b67dc5023e2',
-      ),
-      'lang' => 
-      array (
-        'b5.js' => '447acabed5a028ed6130315d9c943de9',
-        'ch.js' => '9ad4148575e696b826345faf9c104ecb',
-        'cz.js' => '7e0d467e3c3f95365f07fcd57e9e6036',
-        'da.js' => '4450a6f37a4619e067466157477e227b',
-        'de.js' => '24be5c7286b694ec285fdd3e39430eb5',
-        'ee.js' => 'cef8b2148ce28b55eafdd41a9479d29e',
-        'el.js' => '49f2dd6d814083e200450934175e54ce',
-        'en.js' => '67a44be798d52f8434b1d5db9afc0344',
-        'es.js' => '465284bdda072f89c1aa381bd129d4eb',
-        'fi.js' => '1648e59b0fc3e98b673e260c4c4f2b54',
-        'fr.js' => '9c8d847c3c1384e36d115c0437036961',
-        'gb.js' => 'b6ff9b489e34676feeb33c94d67e3c40',
-        'he.js' => '5973c58ae6d3cf1a7e13d53968e2f8b5',
-        'hu.js' => 'e4058a7d72a280f4d007b0cba7dba299',
-        'it.js' => '48f677e19fcbbf3eb3e2f32e808e6195',
-        'ja-euc.js' => '1937933840fe8a3f6c27850f9d1a6b15',
-        'ja-jis.js' => '58f5669e271d2a9399ed4319b6a27563',
-        'ja-sjis.js' => '1ce17214bec7f48f7c7fbc0cb14ae591',
-        'ja-utf8.js' => '08eec318143c80b3f9d77c16e302c327',
-        'lt.js' => '8b5d346a3a49d276b0d613dbd05babc7',
-        'lv.js' => '1821f4505b4824daab558b8ab8456589',
-        'nb.js' => 'fe892254acff2640f3e52d26839b936b',
-        'nl.js' => '31994cf5b276689e361684336577611c',
-        'no.js' => 'ddb7044ad152be38f496969473a1175c',
-        'pl.js' => '9ec4ec413e44d1f372db4dc5d3117153',
-        'pt_br.js' => '79ffb2703fc0e55e71e54842a86598bd',
-        'ro.js' => 'cdbeac570a639c27ebddde2825352787',
-        'ru.js' => 'd980179d51e134536810d69fbd48568b',
-        'se.js' => 'eb12fb43788fd80aa4a60b7826ec01cb',
-        'si.js' => '886456af4fc31dbcd830e796ef7f3912',
-        'vn.js' => '8c6666b64ed1206242f30b0b7c47dd56',
-      ),
-      'plugins' => 
-      array (
-        'CSS' => 
-        array (
-          'lang' => 
-          array (
-            'en.js' => '8e6555db8565a1d7f048b6a18dde3fda',
-          ),
-          'css.js' => '090411fa76b76164871cf2344a83816b',
-        ),
-        'CharacterMap' => 
-        array (
-          'img' => 
-          array (
-            'ed_charmap.gif' => 'cbdbb8c0c3a4ec3d285d1b45eaafd08b',
-          ),
-          'lang' => 
-          array (
-            'de.js' => '4ed8e64697d6e02747eecff014fb37f9',
-            'en.js' => 'ead2887475037b02a936253d02b69f3d',
-          ),
-          'popups' => 
-          array (
-            'select_character.html' => 'a04ca5324301728db4e709e1ba6b042a',
-          ),
-          'character-map.js' => '45ca956159d003a48cc3f986d9b9378e',
-          'makefile.xml' => 'd931cda0bf52a8924c8f7ae33c7b2c1f',
-        ),
-        'ContextMenu' => 
-        array (
-          'lang' => 
-          array (
-            'de.js' => '4b2fce5f5d94db5a1a9e8d49b14f251f',
-            'el.js' => 'f66150fc20a7710a38f06ca26aba56c0',
-            'en.js' => '3cd3c38364df0fc5bf545c040b575bb6',
-            'he.js' => '42160bd5787ff8ebb2db2eba0b3765ed',
-            'nl.js' => 'be00a4d988b49422748508b18aaca0b7',
-          ),
-          '1.pl' => 'b6bf5f353d0a8855a1fd306b66cbe9c5',
-          'context-menu.js' => '5a7c67297506ef28729e14a3473862b3',
-          'makefile.xml' => '014bbd44792974fd68bedd459ad86916',
-          'menu.css' => 'e9a7d8e58b8467c4aa2c21d78a3d55f5',
-        ),
-        'EnterParagraphs' => 
-        array (
-          'enter-paragraphs.js' => 'e07557b92190a5afb75a1947b54183f6',
-        ),
-        'FullPage' => 
-        array (
-          'img' => 
-          array (
-            'docprop.gif' => '7d7b378ee76a7261839f1761747c92ca',
-          ),
-          'lang' => 
-          array (
-            'de.js' => 'f2521a052eb077cc4ca8bdac46b52318',
-            'en.js' => 'a32a89a7d529980c4578ce41d5060a83',
-            'he.js' => '4d7d7ac12427b8e83409f5a722b24a3c',
-            'ro.js' => '70c749f56e054ee375d3071835bff971',
-          ),
-          'popups' => 
-          array (
-            'docprop.html' => 'd70ad91008772d4cfddc481047450388',
-          ),
-          'full-page.js' => '64e3137a2797388a5f9c8997bc95254a',
-          'test.html' => 'bc2dbd5b474b8ee25201bdf9d6111f2d',
-        ),
-        'HtmlTidy' => 
-        array (
-          'img' => 
-          array (
-            'html-tidy.gif' => 'df7a4baa0a571884619ae7eb0c200bb7',
-            'makefile.xml' => '51b266fe6e1c56194e882daff3cced7c',
-          ),
-          'lang' => 
-          array (
-            'en.js' => 'db675a7d0202b2fb278038b16fbf9cd2',
-            'makefile.xml' => '093576d9af435ec31fd92da9bce1744a',
-          ),
-          'README' => 'e72c09ecd15ee4288dd403ef47bf0622',
-          'html-tidy-config.cfg' => '09ee92887f93971b1858f289427d441c',
-          'html-tidy-logic.php' => '8f7236a0097cc58f8f72dadb20ab3604',
-          'html-tidy.js' => '7b9e2fcfb2a25fd01ec420a67e32a858',
-          'makefile.xml' => '7dd3abc3e30aa07ac4b0d18810dea63e',
-        ),
-        'ImageManager' => 
-        array (
-          'Classes' => 
-          array (
-            'Files.php' => '2692b44b256a5bd27b675abb64250682',
-            'GD.php' => 'f0b6c4522817f07ca95bc64f9a162599',
-            'IM.php' => 'cba66d49670c9e1e3e12281c1e456999',
-            'ImageEditor.php' => 'e88d5eb443de0968694d7c84231a0a02',
-            'ImageManager.php' => '0c3d9e63708ad26239a03ac4b1b4319f',
-            'NetPBM.php' => 'd13aae16707bca40d61c9603cfb8bb59',
-            'Thumbnail.php' => '57b96ef8a203a79eefbc53c7aa32f79b',
-            'Transform.php' => '70627a5e07fd7bb51c35d5407333f64b',
-          ),
-          'assets' => 
-          array (
-            'EditorContent.js' => '56ca6920dc7b98dc4e975cebb8790712',
-            'ImageEditor.css' => '923a26cbde11cd05a2fe714d75d61edd',
-            'dialog.js' => 'e418b7c77ee9f8bf01d100b3de63757f',
-            'editor.css' => '0523943b213ec2edfd9f3562397ee24d',
-            'editor.js' => '97844fb6bc700e8c832a6bd95b6dd92c',
-            'editorFrame.css' => 'd585831ec0b2a9088755c5748d80ffd3',
-            'editorFrame.js' => '7da85c65207fcb1a66add2105d3d140c',
-            'hover.htc' => 'b8e7a2a9b05a94f4789ec220f4c688ab',
-            'imagelist.css' => '73a0b0581fb0020a3f734334dc60cdca',
-            'images.js' => 'a46d80c6482269737ea52879f92ba643',
-            'manager.css' => '8889b7af3a1d994e472fdd2ebe69500a',
-            'manager.js' => '4b1887eb16e3794e47b707feae04b58e',
-            'popup.js' => 'ce11aaa2796994d1a931e4376951fe8d',
-            'slider.js' => 'd8bf45b210537f1f220d3f7123c51160',
-            'wz_jsgraphics.js' => '034e994a173372f31661f66cd84cdb95',
-          ),
-          'img' => 
-          array (
-            '2x2.gif' => '889a061243a8d254b8a051f4c2e5888e',
-            '2x2_w.gif' => 'e602cc47d26909903907a1141736bc4b',
-            'btnFolderNew.gif' => 'd36d09544ef41db8a3230d25735960c8',
-            'btnFolderUp.gif' => '6ee5eb9556897ac23a6762645b9c98fc',
-            'btn_cancel.gif' => 'a4f53f6cfd7fe94f243762224f9f9c19',
-            'btn_ok.gif' => '9c9ef0692dc686d2f80f387821364454',
-            'crop.gif' => '9423eb4e1b1887ae43479f322bf624c3',
-            'default.gif' => 'fd81a1c481584f1b1f1166f29b9ca60a',
-            'div.gif' => 'cf5b3b40af68e894b7e8daf38dc590f0',
-            'dots.gif' => '1f1d5ee955a043ef4e32a1fb6908a9d6',
-            'edit_active.gif' => 'dd9aef4d47d74d2fd0468b306b93c7eb',
-            'edit_pencil.gif' => '3c1632099bd6d9f628d75cc945d65472',
-            'edit_trash.gif' => '544f51af0afd7c03f89aaed3bd236bce',
-            'folder.gif' => '6d3fe7d47b4a1f5788b755b9f41962fe',
-            'hand.gif' => '228dec68bb9d3e4db8f892da48b82077',
-            'islocked2.gif' => '9d20ae36b2ba9ecbff770e4905779725',
-            'locked.gif' => 'b1da4d2161b8a50077caff0affde606a',
-            'measure.gif' => 'b965f9dec293df5ff007e57a20da5862',
-            'noimages.gif' => '8f1b20dfcbb76ea7eccaaa7dce7bd2e6',
-            'rotate.gif' => '2e9f127ae49427d98a389f97e88b8302',
-            'save.gif' => '0ef008540649f73357ccb9e11fb0c143',
-            'scale.gif' => '7681e29865fd4206871bbf9ff78a0d6e',
-            'spacer.gif' => '221d8352905f2c38b3cb2bd191d630b0',
-            't_black.gif' => '56953a9124d388a2c36e1f40cc539776',
-            't_white.gif' => '9448cc76491fdc49524d19c21fd7c81c',
-            'unlocked.gif' => '180782c948e3dcc25efac3fdb4bc1f25',
-            'unlocked2.gif' => '717ef4a83a86cfc967c64110efdeadf7',
-          ),
-          'lang' => 
-          array (
-            'en.js' => '878cc575e93b0209fe9f16765c9834bc',
-          ),
-          'README.txt' => '1c6d282806895395a23e514c4f1066b5',
-          'config.inc.php' => '03269e9ae6a4b70e123e990a605031e6',
-          'editor.php' => '170e45516bfc45c5a826e430827e1119',
-          'editorFrame.php' => '802917ce477b1acd1e76d42be9aa5f6a',
-          'image-manager.js' => 'dc30741f304b2950d50e7b96e0d47611',
-          'images.php' => 'f218b51d5e9fcc072c5d66315423bab8',
-          'manager.php' => '71baed2d33b08b013ec8b9aeeb4e6077',
-          'newFolder.html' => '767491c7e3685a684e0061a7127b2ee4',
-          'thumbs.php' => 'dac30ffea29e6ce86cd4d00ffc5008cb',
-        ),
-        'ListType' => 
-        array (
-          'lang' => 
-          array (
-            'de.js' => '48151b4536ffef96e950b967a5ad27b3',
-            'en.js' => '3e2424f60d678219d71dd3c5992520b4',
-          ),
-          'list-type.js' => '9ae3d27711d44a896a4994ead5ce0e28',
-        ),
-        'SpellChecker' => 
-        array (
-          'img' => 
-          array (
-            'he-spell-check.gif' => 'a9691fd828640716a4824fd3687095cc',
-            'spell-check.gif' => '45f87ae3a236a82a00590675ab45300e',
-          ),
-          'lang' => 
-          array (
-            'cz.js' => '423ea6b03dd929379d8c3c0e2a1b03a6',
-            'da.js' => '497d53b6de504e815f21e0b52c4429be',
-            'de.js' => '8e1cf54a88bfa8f1f1bae8901ec724d3',
-            'en.js' => '377855eaba880269a2a806e1f410dbd7',
-            'he.js' => 'ee5604c67403b7344bd8aab484993b74',
-            'hu.js' => '2f79d9530b544abcc01c980066319b5e',
-            'it.js' => 'b731ddc9bccc8b8b45862bc8af1fc03c',
-            'nl.js' => '347cc6ab35dc6e52f078173aca6038cb',
-            'ro.js' => '1cb27ad27005caa43d26fe038aca361e',
-          ),
-          'readme-tech.html' => 'dbeb0b3677a42ec8d6ba93c74d80777d',
-          'spell-check-logic.cgi' => '8a73715a7dfca8571e40f2a0c0ce73ca',
-          'spell-check-style.css' => '6953de17403da48de1a429187892200f',
-          'spell-check-ui.html' => '3af087688cd52a07b4baedee45d4a36a',
-          'spell-check-ui.js' => 'a1567a45c985106c96c18e999dc56ffa',
-          'spell-checker.js' => 'd922b5b20388fb3d73ab470c79fb2f4e',
-        ),
-        'TableOperations' => 
-        array (
-          'img' => 
-          array (
-            'cell-delete.gif' => '7bfbe4bb08412b6933b9e4cb67279a50',
-            'cell-insert-after.gif' => '0cfcc1080fe87476e80ee62a5e7c228e',
-            'cell-insert-before.gif' => '90729f21741e8d1e6de6bda134b8e28d',
-            'cell-merge.gif' => '643f7ce0bd58e09e9d33afb7bafcfb41',
-            'cell-prop.gif' => 'd499211088027cb901d0e2110608b6ec',
-            'cell-split.gif' => '5f2d042f04107d2b74e205c4bcd75bed',
-            'col-delete.gif' => 'b7e7a41e9176c07af5a10ca2035019e1',
-            'col-insert-after.gif' => '999e3fec40db7cff90fafc0ef9b67c90',
-            'col-insert-before.gif' => 'bcbdc75b946ef3c67523e26105046731',
-            'col-split.gif' => 'c0c535be91376e5f5a763c3bee9bcaab',
-            'row-delete.gif' => '550b14813b04e8a1a49f2799bbf2ecae',
-            'row-insert-above.gif' => '121b8897f46625b42a0626e98b428ea3',
-            'row-insert-under.gif' => 'dad2c7e0d7b38f9982382c2925ca18a2',
-            'row-prop.gif' => 'e6df91ff1129ca622afb11dd1d9eb693',
-            'row-split.gif' => '42fea49dff83dd1437defdc43795e300',
-            'table-prop.gif' => 'a0c6945eba87e40f753952c16f1e788a',
-          ),
-          'lang' => 
-          array (
-            'cz.js' => '891f6cf5b22f7a1c8dcbf039a3bc29cd',
-            'da.js' => '6253788b287cd7069c02bce1c25458ab',
-            'de.js' => '48a37c922d8b8fc7d93cfb20a50357c4',
-            'el.js' => '342afc0caefe7e53ac753d6b8f2ed041',
-            'en.js' => '0d42d10515c8be7601482beffd37eff9',
-            'fi.js' => '5b8ee761a423e09cc360294f87e85c08',
-            'he.js' => 'a1645eb3b8b5306c7046791fd0b4b6a3',
-            'hu.js' => '971f436dce04d926c0835e93816b2912',
-            'it.js' => 'e9f2d5f3d7ff32468dd44077ea21937e',
-            'nl.js' => '7d1ec5afd720877120bb81f73ba0cf70',
-            'no.js' => '8613a29c3174424b0bf9abee60352434',
-            'ro.js' => 'a01f89c091380da4a56acd9acf06516e',
-          ),
-          'table-operations.js' => '1b988f2a82430274492780b22a2bb7ba',
-        ),
-      ),
-      'popups' => 
-      array (
-        'ImageEditor' => 
-        array (
-          'jscripts' => 
-          array (
-            'EditorContent.js' => 'a0d5619dd3570cd2ecc8711d23aa36d6',
-            'slider.js' => '3d58fd930085aa61cd9fb0e7bc81f01d',
-            'wz_jsgraphics.js' => '034e994a173372f31661f66cd84cdb95',
-          ),
-          '2x2.gif' => '889a061243a8d254b8a051f4c2e5888e',
-          '2x2_w.gif' => 'e602cc47d26909903907a1141736bc4b',
-          'GD.php' => 'ad14fd96ebf77707b3f177536c0b20f2',
-          'IM.php' => 'fcf6c91de9af23e2cb297412df1590e0',
-          'ImageEditor.css' => '923a26cbde11cd05a2fe714d75d61edd',
-          'ImageEditor.php' => '2f8f8c4fbfb1b0b3cd02efec79652c23',
-          'NetPBM.php' => 'aa5eefb655d68a94702d41ccf6ff7d7c',
-          'Transform.php' => 'e6448a8d758d5afb6ca1af5e6bfc7910',
-          'btn_cancel.gif' => 'a4f53f6cfd7fe94f243762224f9f9c19',
-          'btn_ok.gif' => '9c9ef0692dc686d2f80f387821364454',
-          'crop.gif' => '1a76734219b53116f4e9905ea2af2e23',
-          'div.gif' => 'cf5b3b40af68e894b7e8daf38dc590f0',
-          'hand.gif' => '228dec68bb9d3e4db8f892da48b82077',
-          'load_image.php' => 'f155a3b259125b861528d09768ed858d',
-          'locked.gif' => '9d20ae36b2ba9ecbff770e4905779725',
-          'man_image.html' => '8f012c3475587bc082fe6b20d942069a',
-          'rotate.gif' => '2e9f127ae49427d98a389f97e88b8302',
-          'ruler.gif' => '53000656f017f2c128e86dd9f314e95f',
-          'save.gif' => '0ef008540649f73357ccb9e11fb0c143',
-          'scale.gif' => '0ea1e46cc5de3f04a2e83f7daf690a95',
-          'spacer.gif' => '221d8352905f2c38b3cb2bd191d630b0',
-          't_black.gif' => '9897846e47b0b7dc9fcd2b89e918dacb',
-          't_white.gif' => '9448cc76491fdc49524d19c21fd7c81c',
-          'test.html' => '691e4bb7755b5ae86538a8852b9fe759',
-        ),
-        'ImageManager' => 
-        array (
-          'btnBack.gif' => '551c98aa577cd1fc06c6703ec167d6e8',
-          'btnFolderNew.gif' => 'd36d09544ef41db8a3230d25735960c8',
-          'btnFolderUp.gif' => '6ee5eb9556897ac23a6762645b9c98fc',
-          'config.inc.php' => '31d8cebc72d510e35cc1c53f496d6367',
-          'config.inc_orig.php' => '87b4ab3f0e7d8ae6a4562730cfe987c7',
-          'dots.gif' => '1f1d5ee955a043ef4e32a1fb6908a9d6',
-          'edit_active.gif' => 'dd9aef4d47d74d2fd0468b306b93c7eb',
-          'edit_pencil.gif' => '3c1632099bd6d9f628d75cc945d65472',
-          'edit_trash.gif' => '80269e15cbb7187371493dfa52b6a53d',
-          'folder.gif' => '6d3fe7d47b4a1f5788b755b9f41962fe',
-          'images.php' => 'aa1010985b23d278667e33c5d212c14f',
-          'loading.gif' => '3e131b006c211839150e2336691918f4',
-          'locked.gif' => 'b1da4d2161b8a50077caff0affde606a',
-          'newFolder.html' => 'd7a282c567c2d84c6bbd312645538a29',
-          'noimages.gif' => '8f1b20dfcbb76ea7eccaaa7dce7bd2e6',
-          'thumbs.php' => '2f721186a74b6a0ece248b667bdf915e',
-          'unlocked.gif' => '180782c948e3dcc25efac3fdb4bc1f25',
-          'uploading.gif' => '62d8e984849c9747f9a05de393e055be',
-        ),
-        'Copy of insert_image.html' => '8a06b1d93a6115f1ecc12ec2caf5749f',
-        'about.html' => '9c6c02a3a05707cfeb768b428f60516e',
-        'blank.html' => 'c83301425b2ad1d496473a5ff3d9ecca',
-        'custom2.html' => '2ccb932916cc2696d5d1952d4d36eb13',
-        'editor_help.html' => '7ca29d18f18c0040db5c3af15254d0e8',
-        'fullscreen.html' => '4d9d7c276363f212428b2ed15cf9d8a6',
-        'images.php' => '3755c66145eba21cc2199d455e855d73',
-        'insert_image.html' => 'e9db88c76c75487cdd5415525ff94444',
-        'insert_image.php' => 'b024826624d558a4600659d20189738b',
-        'insert_image2.php' => '8a06b1d93a6115f1ecc12ec2caf5749f',
-        'insert_table.html' => '47057008bd2f8af99f40b64d69fc7101',
-        'link.html' => 'c692e60fd034d33bfe452e014d99fdaa',
-        'old-fullscreen.html' => '0daa59e83fdb6b487c6502c5e6a2d42d',
-        'old_insert_image.html' => '9482a4fbbea5a45558f2faaf83291f09',
-        'popup.js' => '8efbf716ae23676c4cd3bec5a6b8df46',
-        'select_color.html' => 'c047474ad06f18557cd711c78bf86c4e',
-      ),
-      'ChangeLog' => 'c68e0a92145cad1afd0738dc0875f7a8',
-      'dialog.js' => 'd84853c01220bee8568dc68701ff5253',
-      'htmlarea.css' => '327b488d20dacdbf5466532bc2f6cd5a',
-      'htmlarea.inc.php' => 'ba73019f5bb7502c17fadeb92975cd59',
-      'htmlarea.js' => '13e42f7db453422762ce64cee52bb8f0',
-      'index.html' => 'dda9c564dbf0a33feb4535edf11f9110',
-      'index.php' => 'e515b64e6a348436045ef89d78776c1c',
-      'license.txt' => '9153c7000079a9f2f6441e6211a20689',
-      'popupdiv.js' => '3363d6531f00951387d0094217fcd3f9',
-      'popupwin.js' => 'b24c467ee42722fc061e262fe11a5b4c',
-      'reference.html' => '8b3cd84619e5476e118fb2d6285eceb7',
-      'release-notes.html' => '64d8c1087c9ae11062682129e1547fca',
-      'test.css' => '0edee201158cd4a1ffecd1334afe63dd',
-    ),
-    'javascript' => 
-    array (
-      'sitemap.php' => 'edd37423c3218ff1c3d242198ebfb60e',
-    ),
-    'parse' => 
-    array (
-      'parse_avatar.php' => 'bc7d58d3b0d15e23e030920b9051e16e',
-      'parse_emailto.php' => 'df63e9219382e8ea652dfc97b4a30ca4',
-      'parse_menu.php' => 'e3fa890a733e4262cfe0ae82910a338a',
-      'parse_picture.php' => '6fee5312651fb1f3b525a02ad1a7ac6a',
-      'parse_profile.php' => '64f116088d3e55f9a82e62c930828561',
-      'parse_username.php' => '986ffd8dd73ebc6685fa5b82b8119307',
-    ),
-    'phpmailer' => 
-    array (
-      'language' => 
-      array (
-      ),
-    ),
-    'search' => 
-    array (
-      'search_article.php' => '9bec55cc19fbce64f7985ca93306a0fa',
-      'search_chatbox.php' => '0de05ea2574562e19a0686a5bb803e43',
-      'search_content.php' => '7bb898d8278a238bb71cb8169b9ed2bc',
-      'search_forum.php' => 'dcfeb61a2f830291b4bb8b5e0617554f',
-      'search_links.php' => '9667c1e5eca93a0cb1610616c8acc329',
-      'search_review.php' => '323c3b48ecc585e6270ad7e35cc9f1e0',
-    ),
-    'sitemap' => 
-    array (
-      'sitemap_articles.php' => 'cadc92c5c59b98157358d7aaafe2750e',
-      'sitemap_content.php' => '51139ad22af3be101821fb95d192fb03',
-      'sitemap_custom.php' => 'fcb7a1472051f94d26428654f76971b6',
-      'sitemap_downloads.php' => '797820b44a3d942e7d01b0671f018238',
-      'sitemap_forums.php' => '0ee814778c6e0bfb2dfc887b55de9285',
-      'sitemap_links.php' => 'bf0baa44ab7bffa9b6edfb9d5d5d4879',
-      'sitemap_members.php' => '9b69a90d417413a0f71526d6e86d45f6',
-      'sitemap_news.php' => 'edbaecb0c53a67c70f18115fdf016929',
-      'sitemap_plugin.php' => '8efa15ed27447e28c5da1575e4585419',
-      'sitemap_reviews.php' => '2ed15c10e8d7cd03e4514483fae57a99',
-      'sitemap_stats.php' => 'b6c748044f12a7ecfd7c3d954368cbde',
-    ),
-    'textparse' => 
-    array (
-      'basic.php' => 'c90c4c7f52e629fdbab1485fe1f5b6b6',
-    ),
-    'tiny_mce' => 
-    array (
-      'langs' => 
-      array (
-        'ar.js' => '169d300416af7cdce6b654bd06ac2a06',
-        'ca.js' => 'e054365bf2a065901d056b32b0a59e70',
-        'cs.js' => '1d3a1ae555dbba9bb95d9ce840baadf3',
-        'cy.js' => '870de31fc18bab817e6d2d7b4aa872db',
-        'da.js' => 'cc247f4d1e6091c73cc7ecf4b4cb7593',
-        'de.js' => 'e537b2b171cd2f23576b629ab19ffa45',
-        'el.js' => 'c096fbf3106ea60a2853ae7b20837083',
-        'es.js' => '722eafb047cf340d2b4b3634c9e21b7e',
-        'fa.js' => '765b91b313f4a0f26d42484c77467435',
-        'fi.js' => 'ccc8cb4f10b06859601658a90bbe345e',
-        'fr.js' => '830a88badcbf0fc6945629fce64170c2',
-        'fr_ca.js' => '6bea7226495c8206f636fa254941f76c',
-        'he.js' => '85bae4a55d6394528f8cad5ff5ea8f99',
-        'hu.js' => 'aadba22877f75ffe0da5aae7411ee555',
-        'is.js' => 'ff7131f18d060c1d1067c34dda46e07f',
-        'it.js' => 'e7916809ed09cb8b08183a26631852b8',
-        'ja.js' => '218c57cf1200749edef223732cac282c',
-        'ko.js' => 'f6c50cb6f13426a16676bde0b40b020a',
-        'nb.js' => '14256f6008d426eb669e371c9cf34060',
-        'nl.js' => '82569f5c2204acb05bc092dda323305f',
-        'nn.js' => '8c5856fcd3202541c30761a0bbe95abb',
-        'no.js' => '4d36ba827e1f9abd6cb9feb15ff57b08',
-        'pl.js' => '1684ef7d0c56a3a8cb05c4aefb819433',
-        'pt.js' => 'bc6ae838e0606cf3fbade874358cfb30',
-        'ru.js' => '56c1ff2e73723c6f8fae848272328d4f',
-        'sk.js' => '9e0bb7f1f7e24a341032200403cbaa33',
-        'sv.js' => '903a021d9a56c081bb7f3c472da74cea',
-        'th.js' => '7f64804bf3630e8f5f15de051babad84',
-        'zh_cn.js' => '20a2d07cc1c450f17bd32628f05d893e',
-      ),
-      'plugins' => 
-      array (
-        'compat2x' => 
-        array (
-        ),
-        'contextmenu' => 
-        array (
-          'css' => 
-          array (
-          ),
-          'images' => 
-          array (
-          ),
-        ),
-        'emoticons' => 
-        array (
-          'images' => 
-          array (
-          ),
-          'langs' => 
-          array (
-            'da.js' => '814c678d68b7846bd3cc7185293f4a1c',
-            'es.js' => '5c5e44038d0d5083510970ed518093b0',
-          ),
-        ),
-        'flash' => 
-        array (
-          'css' => 
-          array (
-            'content.css' => '9ae9f08d9748dc78ed6e0b33cd11e458',
-            'flash.css' => '5ad8611160baa5f2198abb88baae38c9',
-          ),
-          'images' => 
-          array (
-            'flash.gif' => '709d9df69d8c2030e56321046d76ab8b',
-          ),
-          'jscripts' => 
-          array (
-            'flash.js' => '6b51cb8bf256f6ebc86e3a325475209b',
-          ),
-          'langs' => 
-          array (
-            'cs.js' => '50b2809eb2cd7801895d1e6e98a9c91b',
-            'cy.js' => '5dcfd2755cddfcbe6351d4dbe6c6ac85',
-            'da.js' => 'f2b72ffa4f64243f1c1d8e531ccd74b1',
-            'de.js' => '5d238f5f9a261564e09a002cb5c93ff1',
-            'en.js' => '52de748671eb0182b112111dbaa35e88',
-            'es.js' => 'ec24f744a0c500a651db47fe579994be',
-            'fa.js' => '14a0820203eea7f22856a2c8174f9636',
-            'fr.js' => 'e489db910121ca476419966302177706',
-            'fr_ca.js' => 'b6768e9d9b8f57a5e19e0bb0e108f84a',
-            'he.js' => '39b200474cb83b04a48c2f07319930ca',
-            'hu.js' => '846d4333e20d69b57cbee77b243f51ae',
-            'is.js' => 'cf9e78d16351bdfe2423a208a82f1ed3',
-            'nb.js' => '2f5c5fe3b2de8c401b0a0649f40e9dd6',
-            'nl.js' => '3d95f1fbb0c52ed3b6d54968de5f6e01',
-            'nn.js' => '25fc03ee93c77b1e98a2294cf6c333b8',
-            'pl.js' => '057d4c9a766965d068c47807ffc65332',
-            'pt_br.js' => '1792b9f671c47547cfe2dbb4ee22bdd4',
-            'ru.js' => '7f292bd82c13f543a2cc9d2ce57920ad',
-            'sk.js' => 'f45dc9dd2d9351d9ad37ddf080b40959',
-            'sv.js' => '0dd9da08e68b78ce0832b75ddf7b0d7f',
-            'zh_cn.js' => 'c5e6a82179266880d79b4626f965b108',
-          ),
-          'editor_plugin.js' => 'd9a86e84d6de9a92c07caa14c32fa436',
-          'editor_plugin_src.js' => '9f6d08f5269ffb3d107bbb382d1080ae',
-          'flash.css' => '439d26d52ddf50dd5ac7d5fcb29a6e7d',
-          'flash.htm' => 'c67139b142800773e99457bd880978e9',
-        ),
-        'ibrowser' => 
-        array (
-          'images' => 
-          array (
-          ),
-          'langs' => 
-          array (
-            'da.js' => '3394bc3500d94fa47fd39c17f0bbfcf9',
-            'es.js' => '7b1df3446f8ccb76e80cfd9a5b13ed17',
-            'nl.js' => '7004a5cd5e9e09d193d6742849dfb4ee',
-            'pl.js' => '5bc48956a398ac86f36edb041a898a85',
-            'sv.js' => 'b95727449ec9e4bd7c3774ae8ceef0ab',
-          ),
-        ),
-        'iespell' => 
-        array (
-          'images' => 
-          array (
-            'iespell.gif' => 'eb12c26b5768fcd344ea6205aa98e761',
-          ),
-          'langs' => 
-          array (
-            'cs.js' => 'a0f2834cbbd44d40490c11fe370f7756',
-            'cy.js' => '8f7626778be315a6918f66e19a5ff8c4',
-            'da.js' => 'cfc6d891c08e588b1461202d2568d7d6',
-            'de.js' => '91728a57ef0ba20f25e47ee03b4866da',
-            'el.js' => '3d65d19ee490b26fa1787bd8fbd35855',
-            'en.js' => 'b262530d5b63841b50ab5b67f94883aa',
-            'es.js' => 'dd6eac9bdd597674c08d5daa9991d0fe',
-            'fr.js' => '724009d0efaff99b88271c7f34ef1dfa',
-            'fr_ca.js' => '54bbb38074a99afe3837478c49c0afc2',
-            'he.js' => '3609aafd758034d56598706932ca4662',
-            'hu.js' => '8b95913effa4e9d396fa734cdc6fe186',
-            'is.js' => '777e6acb33acea76fce8b1109d74c693',
-            'it.js' => '0de3c5e3e36d73e9f3b6ef6ed03ce5c9',
-            'ko.js' => 'a08675987efeac4b71e024e6766d40d9',
-            'nb.js' => '5d570071a5be75f3545dfbdc330bad6d',
-            'nl.js' => 'd868734d3267d4889352a8411a3eb43f',
-            'nn.js' => '8484fc2cdf334f00d461b6c64ef91287',
-            'pl.js' => 'be72eef12fd4177e9283cf6083267079',
-            'pt_br.js' => 'f18184638fe63e45cce421a0caa70a42',
-            'ru.js' => 'cc1b970dd624041f208852864544ce67',
-            'sk.js' => '6b8f43fac2a387024e35f8526f407598',
-            'sv.js' => '9df8dd73b0ab656e8296b8a60969a2bd',
-            'zh_cn.js' => 'fcfa956bf3fa2efc6ce5cb980399f4f8',
-          ),
-        ),
-        'media' => 
-        array (
-          'css' => 
-          array (
-          ),
-          'images' => 
-          array (
-          ),
-          'img' => 
-          array (
-          ),
-          'js' => 
-          array (
-          ),
-          'jscripts' => 
-          array (
-          ),
-          'langs' => 
-          array (
-            'en.js' => 'de38190b0b16ff997c6f7a2e09818f3c',
-          ),
-        ),
-        'table' => 
-        array (
-          'css' => 
-          array (
-          ),
-          'images' => 
-          array (
-          ),
-          'js' => 
-          array (
-          ),
-          'jscripts' => 
-          array (
-          ),
-          'langs' => 
-          array (
-            'ar.js' => 'ae43b3e7e800feda0f3b30047e791e36',
-            'cs.js' => 'cd74781764e126601991f523238b2997',
-            'cy.js' => 'cdab2180c5e65051912c96cc88c86354',
-            'da.js' => '6149f162722148ecf3876fb10b3e737e',
-            'de.js' => '8cb4b9f7f1c94b051d781acb3da4d0d5',
-            'el.js' => 'dcd0296a2b66bea7eb4014c5e499ae53',
-            'en.js' => 'efb577fa33557c4f819d45f8be16ff20',
-            'es.js' => '438ea428f82d61c1ed95eaed346f97dc',
-            'fa.js' => 'e64696a278069b4ea22bd952aaadfcaf',
-            'fi.js' => 'fcf27030ae50526ae018dcfafa692002',
-            'fr.js' => '8454709e737811f71a61c8774017da1f',
-            'fr_ca.js' => 'dd198d47e8338b4988847cf2f8f811c5',
-            'he.js' => 'ced8892be5250b25aefd41de3a23916d',
-            'hu.js' => '7efabf89b76f57212804fa31854fb6dc',
-            'is.js' => '0da0419d1bb98cd59afd434715233b54',
-            'it.js' => 'a28c251cfd0f5a8dbc65b8b84d1468cb',
-            'ja.js' => '383db7d235a1afa20b3ca79802f23919',
-            'ko.js' => '69d5c2869ae41c037aff46e60c02aec9',
-            'nb.js' => '797eb5494ea48a5365b289c17069543a',
-            'nl.js' => '2891eccd7b5c22123246970a022098c8',
-            'nn.js' => 'a48ff66d7505c209fa8ee6a27caf20a1',
-            'no.js' => '5752ac40187c94adec44113a9876ed9e',
-            'pl.js' => '59353b4a299e3b5469ed727be36495bd',
-            'pt.js' => '17255ea9f80c38ee898cd6d4b52adf04',
-            'ru.js' => 'c314078b00ff63c22709ce42e3b5ad82',
-            'sk.js' => 'b4bfbc71af3b861f0e9afbb459ebddca',
-            'sv.js' => '3cb350e825625d35ee56a240968978d5',
-            'tw.js' => '460af4c883d0599602a396ac6df2291f',
-            'zh_cn.js' => '5e66efd3b2631d9d8a4b6d465df4444a',
-          ),
-        ),
-        'zoom' => 
-        array (
-        ),
-      ),
-      'themes' => 
-      array (
-        'advanced' => 
-        array (
-          'css' => 
-          array (
-          ),
-          'docs' => 
-          array (
-            'en' => 
-            array (
-              'images' => 
-              array (
-              ),
-            ),
-          ),
-          'images' => 
-          array (
-            'xp' => 
-            array (
-            ),
-          ),
-          'img' => 
-          array (
-          ),
-          'js' => 
-          array (
-          ),
-          'jscripts' => 
-          array (
-          ),
-          'langs' => 
-          array (
-            'ar.js' => '6602819f1c11e5dfa03aa9351b6c6ed4',
-            'ca.js' => 'fc23aa867a542b271be04c0c507cbf7a',
-            'cs.js' => 'fa05040a48ef15b534bcfd559fcc5e2a',
-            'cy.js' => '41d7e18bf59ea3656971025ce7ee2360',
-            'da.js' => '2df17219dbd20b478ddf818e782bf884',
-            'de.js' => 'dacdff80bdd36137be8c01e49f321dc0',
-            'el.js' => 'fd252d3ec3b889b64e49f156e1cce056',
-            'es.js' => '38f3298054a3c0eccef751738c29357e',
-            'fa.js' => '7cba6a1fe0a72e6d7fff260e5434d509',
-            'fi.js' => '05e023a47b125ad62b7ca756f11fca15',
-            'fr.js' => 'dbdb8ed00240c5365184125e39d1db0d',
-            'fr_ca.js' => 'db301661bb2a7e36d5a0fb287e6e2ed0',
-            'he.js' => 'b16b9eb1c62dc0bdefd65c274da9ec9e',
-            'hu.js' => '07f5bcee49de2e283f5cbaee4eaa391a',
-            'is.js' => '7ebb7ccf6298e6f223c39c75852b4a2f',
-            'it.js' => '5e517d045390ec97bd987d1f7fa55541',
-            'ja.js' => '6b3ad91960606adfb97828a7f79b5764',
-            'ko.js' => 'c922cb3ae02c588a318f75c3855866c0',
-            'nb.js' => 'd53cf8e45eb484f6ea1262d1b43ff98b',
-            'nl.js' => '2a72f399dfff3279b8796f5af6a04939',
-            'nn.js' => '0209d5f5c5f26acd1aaa495e61ac4a6a',
-            'no.js' => 'f246a2593152ca90c0849918d12bd12c',
-            'pl.js' => 'a56af438b6dd4609168f023894de62ca',
-            'pt.js' => 'e760ace435516ee6093bf9b83c7288db',
-            'pt_br.js' => '068b915ccea56b2fd1f5b6284457e5ce',
-            'ru.js' => 'f5286bf3ab6e283e096defa8bca3b21a',
-            'sk.js' => '8e9eef23292200746c3f231b4ac2c19f',
-            'sv.js' => 'e0e158d02e077f0bf8102d7a1657b5b9',
-            'tw.js' => '69e5f2fe9dae27269c4a31a8245bb2c7',
-            'zh_cn.js' => 'e9a1c3aeb41c08b7ee4bed86c3cc193b',
-          ),
-          'skins' => 
-          array (
-            'default' => 
-            array (
-              'img' => 
-              array (
-              ),
-            ),
-          ),
-        ),
-      ),
-      'utils' => 
-      array (
-      ),
-    ),
-    'equery_secure.php' => '00121b097ba978d5330349abbd350737',
-    'errorhandler_class.php' => 'b169b03bc392d49864077e8010abd800',
-    'forum.php' => 'da5c0d4378b7288610945979d269a79c',
-    'forum_include.php' => '8b562f8ba508cc3572c84b443c4e7a6c',
-    'forum_mod.php' => '0ef4ab19bc8002337b2d3582c59874c9',
-    'input_class.php' => 'f819fe76d1fa518f430410aa4e6c803e',
-    'poll_class.php' => '006ed3500ada715d561997ab4bd0eb5e',
-    'security_handler.php' => '5e858bf7b977021b74bfcc55c0d8f9f4',
-    'shortcuts.php' => '49ef7425046fce13b1fcef4fea3dcd63',
-    'submenus_handler.php' => 'b866789e832461178d2ab169b5158b6a',
-    'user_extended.php' => '45646ad4a16d5ceafadf6565130d226b',
-    'users.php' => 'bffb0d325569bbf3f0d946e226d834fa',
-  ),
-  $coredir['images'] => 
-  array (
-    'admin_images' => 
-    array (
-    ),
-    'avatars' => 
-    array (
-    ),
-    'banners' => 
-    array (
-      'e107.jpg' => '01982e7527b5dfab3b8634a0ab0bd75c',
-    ),
-    'custom' => 
-    array (
-    ),
-    'download_icons' => 
-    array (
-      'admin.png' => 'a7376ea540f3ca4f721909bd0e6ae71b',
-      'icon1.png' => 'e931689a5df4fc129cb7edf515504411',
-      'icon2.png' => '861ef3bb6203bb98533f5e4ad01ead5e',
-      'icon3.png' => '7178378df49945353c4cf6cd5e0f8622',
-      'icon4.png' => '3f56677de2890d6db093b0091f8e5e35',
-      'icon5.png' => '62de66653d9f686f7087ee7807fdcfd8',
-      'star2.gif' => '6cb9803a392f283aa7761169df820809',
-      'star4.gif' => '20c59fcebfc2ad7f416afa46752ec89f',
-    ),
-    'emotes' => 
-    array (
-      'default' => 
-      array (
-      ),
-    ),
-    'emoticons' => 
-    array (
-      'alien.png' => '6974b00de984da10b297e7fa9e628afa',
-      'amazed.png' => 'c283684df103a5e20700f96a5f41cb3f',
-      'angry.png' => '5ee786d3503d667e3f31682f1d7b37fa',
-      'biglaugh.png' => '113ab7a2958863073fd293f201b2b7ab',
-      'cheesey.png' => 'ce2406a7c0f680fee7a4980f2f01759b',
-      'confused.png' => 'ce8d57a08d36ae2651fe9a3c36e7ccae',
-      'cry.png' => 'af9f652ec6b891840fa16419b487b590',
-      'dead.png' => '769a5a9cf3fec9ba2025e68a0694ddbc',
-      'dodge.png' => '263141e145f83250115d57a384df93de',
-      'frown.png' => '36cbe1f5dd7d96e4555716391dc26ecd',
-      'gah.png' => 'ed1291107ee075f2878e046116ec8b6b',
-      'grin.png' => '2eaf0c22aab303d555b937331d54de3a',
-      'heart.png' => 'f481cd586397523f5a049ab0e3bb8b6c',
-      'idea.png' => 'efdc92d75376071b4f26bc4d9079504a',
-      'ill.png' => 'f31128acc9a7fcee11364906a62f99a4',
-      'mad.png' => 'cc8e3a28a0fb31ff8835976cadb56438',
-      'mistrust.png' => 'b8d139dac005d271ed1b772293be3004',
-      'neutral.png' => '387cd29b21d0eceab935d3fb161dc1f3',
-      'question.png' => '21d92683bb918283efdc68636a5249b2',
-      'rolleyes.png' => '9f7d79a73089c2080e2bf1023507ab72',
-      'sad.png' => '0e66d4ab21cf0010c9a6e2ffc94795ef',
-      'shades.png' => '2bc442022d4bb9b99850e4fb7c0919ec',
-      'shy.png' => '7d1fa9f1ebacd3bea124648efbcac26c',
-      'smile.png' => '98412834fb8063733c819817150a6706',
-      'special.png' => 'e802a5e499d0794ffc2e93c4eedb5f4c',
-      'suprised.png' => 'a3813e582897e99a5f5980bc6048567a',
-      'template.png' => '190417a4630f9e46eaa58eb782607fc5',
-      'template1.png' => '3b8aeab390660d69fce24f4628f0e0e7',
-      'template2.png' => '42f0eac79e6fc87adf652da6e3c0bf3f',
-      'tongue.png' => 'cd2b96e084ef3df7ab15a366e2bb728e',
-      'wink.png' => '4b057effb0ec0a0c38cc9267adc8e535',
-    ),
-    'fileinspector' => 
-    array (
-    ),
-    'filemanager' => 
-    array (
-    ),
-    'forum' => 
-    array (
-      'admin.png' => 'cdd0a7cbc97c39ceba3bae3bdc01eda2',
-      'admin_delete.png' => '707ddc11a86975090610a76e8ad01923',
-      'admin_edit.png' => 'a383175b504d64e64a84a21dda5c1619',
-      'admin_lock.png' => '744c74fecf65bd64d4ee22681cf6bd11',
-      'admin_move.png' => 'c892805676f983c34dbf308eeb2627c7',
-      'admin_stick.png' => 'ef0bc1380cdbd26118c6c53272e46af6',
-      'admin_unlock.png' => '1818d0d48dfe5f76c8bf3cee9d9e949c',
-      'admin_unstick.png' => '8b57798a150aff163c35a9e2a7c1ff62',
-      'aim.png' => 'bfd4c59a6cc8e1bb380520147657e58a',
-      'announce.png' => '51274830e593a079d57c3213da0b97ab',
-      'closed_small.png' => '23df1d00ed2742c32f08664b39ebe5e4',
-      'delete.png' => 'b9fc374f973e51f45c80884b56cab7c0',
-      'e.png' => '797612f8767a25e9a934580f7d778ef5',
-      'edit.png' => 'dc9067455b48da0bbc50993a4217eedd',
-      'email.png' => 'd954a0e84dcb099a5ece71ff181650db',
-      'fcap.png' => '3d1b365a597132548eb9635b6bca040d',
-      'fcap2.png' => '5f6f45697bc185d51f2c06d904642aad',
-      'finfobar.png' => '71585c0c2d3340ece8cf769a135286b9',
-      'icq.png' => '3ab7fe8b2bfcd5d1bc376caaa7d01969',
-      'lev1.png' => '6f459327ecc4db1418087664ec99cd0d',
-      'lev10.png' => '00fb85385b347b832cce42195c203000',
-      'lev2.png' => '9c348bddca193d020328b9910a5618ef',
-      'lev3.png' => 'c5baa56ed9d682b28f1ca823f75b69e6',
-      'lev4.png' => '29a7bbedc1bfd1d7a36ccb6b4e679baf',
-      'lev5.png' => 'de0edacf89d8013ec4d63619b0363abb',
-      'lev6.png' => 'c939b5600c78d4f679fa1892f9b57a63',
-      'lev7.png' => '57442dff53452b993d10397a393415e4',
-      'lev8.png' => '6ab02457fabe0c8951b51c80a47ebb5e',
-      'lev9.png' => '5197a5949253e509e4994cb2cbc0dc0d',
-      'main_admin.png' => 'cfdb4442feb26d0031828a0f7424f6fd',
-      'moderator.png' => '5c1772259c00d8aca7eda2bac696a826',
-      'msn.png' => 'd1613fee04df9ac3bca9d2d0cceb0c7f',
-      'new.png' => '2bbd79241cf8036164e9965055b6f8b3',
-      'new_popular.gif' => '3c47023ff01dc15fb3a678cb21cf55ad',
-      'new_small.png' => 'df5d599ecd2bdcc93d576d552b71a54c',
-      'newthread.png' => '26fcf53b08097e354ef4d3516fb64c71',
-      'newthread_alt.png' => '286f65b22c67f8edc8caabeb207acbd1',
-      'nonew.png' => '5fe81217e3c6f672a4e2f2922ddbe1c6',
-      'nonew_popular.gif' => 'bd77c2f2b42336d5690646d4006ea983',
-      'nonew_small.png' => '2544ba225c65f82c7788b003edb2d1fe',
-      'pm.png' => '75d5f1434923e1afa54f93dce494ba96',
-      'post.png' => '5212304c8b38fb4033ddf691fd7b77ba',
-      'post2.png' => '0f6cfe51518affb7a6baac798abd907b',
-      'profile.png' => 'ed21e84603c3bcf82eb1820235c36075',
-      'quote.png' => '579d14bfb1faabf191272938fae3ab65',
-      'reply.png' => 'b260ec33dee1736c5a258567d117eb69',
-      'reply_alt.png' => 'cfe83ef2927d9b7819a20fa62837a139',
-      'report.png' => 'f5e4ecc39864c5a8a66cbc3cac33c3e9',
-      'sticky.png' => 'c5bb0a20ef02bf8e52f3a93907804f20',
-      'stickyclosed.png' => '810fb2dee4cf3d593f5a50031a52cde8',
-      'template1.png' => 'feeb5c3f76438732948137e771def211',
-      'template2.png' => '56b7b1d54b872c29042e523c9c043c63',
-      'template3.png' => '66096ef11a4734f52cf06a624786678f',
-      'template4.png' => 'f81e1772495061820f50ed16e489d7b2',
-      'template5.png' => 'f5213d718fe9ad02d6040111c827e8ee',
-      'template6.png' => 'f8319c599737e975bd05ad1890f77725',
-      'template7.png' => 'a1d4f847a68fb991a1126d5c31bda6e5',
-      'website.png' => '568b5e9dcc6fcc5067209e9390297162',
-    ),
-    'generic' => 
-    array (
-      'English' => 
-      array (
-        'but_create.png' => 'fdd815c97c1f2b7cb6fbd579abd72937',
-        'but_delete.png' => '7d0a9a0845029855b1ee3a2df49150f2',
-      ),
-      'bbcode' => 
-      array (
-      ),
-      'dark' => 
-      array (
-      ),
-      'lite' => 
-      array (
-      ),
-      'access.png' => 'f32777222ff51a9d7717a5d66c10417d',
-      'admin.gif' => 'de326ebb9129598abcd207aeacbca61c',
-      'aim.png' => 'c4c641053830a0b470763991e7e1b343',
-      'article.png' => '4c1af0ea92374fcd32eb086f1e63d51b',
-      'attach1.png' => '3f24d017495d3e59a8a18de11a23f63c',
-      'banned.gif' => 'e944e98fc61c72d541437d58309d22d6',
-      'bday.png' => 'b91ccd6511a34855d3da5ec55178ef32',
-      'blankbutton.png' => '32718a34c4e4c62290e5dea6399aaf0c',
-      'blocked.png' => '1227a11750b236543697c6b1f493951c',
-      'broken.png' => 'ded230fd8afbd01c8647e287b78232fe',
-      'chatlink.png' => 'b9579a8c1af6be726547edfc5cfc6eaf',
-      'delete.png' => 'bbffdfd37ba4270e862a73d93b81769b',
-      'down.gif' => '841d5d013c86f7cd61e06b978c5c65a2',
-      'down.png' => 'd94fedebe97edf504f4e3611a831d2c2',
-      'download.png' => 'd121e11e2b01e117e12ca1d9d4bfc8da',
-      'download2.png' => '3fb794a0407283c91fa0f138f26722cb',
-      'e107.gif' => 'fc919304a3df80991ec801f39baf3ba5',
-      'e107.png' => '16751559410e5d868409898522df2cb4',
-      'edit.png' => 'f009b77ab253590ace79a70cfeff566c',
-      'email.png' => '36e771c8c0f3c5508cfb06d09a73133d',
-      'extand2_ico.png' => 'd6cab6c391859427df70a1cf73a3f8b3',
-      'extand_ico.png' => 'ef0dad81c4551e1cf4e5b92cc2682a42',
-      'friend.gif' => 'b86a05be607fc371d4af747e6fed3991',
-      'hme.png' => '18b3c9241db5836b5d5071ba45cb57a6',
-      'hme2.png' => 'e7b5ced50260f1ae8d2fc27d11305fa0',
-      'icq.png' => 'baba3fba52f76960e0917996509849ad',
-      'installed.png' => '13e75fe21dbe487dfe4a70fd8b6a4b8e',
-      'left.gif' => 'a33e2c78aec1bb670527e699bf09142d',
-      'link.png' => '9e921ccc10fdb20e1272441a14bec6cb',
-      'location.png' => 'b47fcee2cfd5e9d8428dbf0bd2279f43',
-      'mainadmin.gif' => 'e2ea0c3a07ad3360b6dc3565fadb92c9',
-      'move.png' => 'c38620b0e49020a0e509bb396629d98b',
-      'msn.png' => 'cb6f3038694b1050815a3c0faea7105c',
-      'new.png' => '19c5797308bdc437a7e612e0e0c36afe',
-      'new_comments.png' => '02c972790cfb529b39567fb2d813fbe4',
-      'newsdelete.png' => 'b108358657ce78bcd8a32bea790c5cef',
-      'newsedit.png' => '7905b143e1a8614f58deba888cfa1831',
-      'noaccess.png' => '1747d86cee75b592d74aa7657f37785e',
-      'noinstall.png' => 'f89fe8f057694f93e4e163e4daf3de2e',
-      'nonew_comments.png' => '7611b72fa10b37d8b25b42b82b7014d5',
-      'not_verified.gif' => '157e88132e5f7e6df5c56857177b5938',
-      'off.gif' => 'b7939422edcdf36818e632fba7fa4c42',
-      'off.png' => '211ebf7f9f317c20c24f34267f4ffe2d',
-      'placeholder.png' => 'b1b16f1feb58cc1c262f4728e710bce4',
-      'plugin.png' => '918cf0e41e6c810a36ddfd88b1571e96',
-      'printer.gif' => '8ac26fe4699decd7a018fcb9887ae04a',
-      'right.gif' => '59521255e9b42ecddf5b5c196db3acd5',
-      'rname.png' => 'd9602be8c82e8b9a439224b659ebbe40',
-      'star1.gif' => 'c92689cfe71f7e6dafccb9f54664ab45',
-      'star2.gif' => '6cb9803a392f283aa7761169df820809',
-      'star3.gif' => 'fde817afe8d962061bfe6e7c1d36d784',
-      'star4.gif' => '20c59fcebfc2ad7f416afa46752ec89f',
-      'uninstalled.png' => '67b9d067ee7eccc0f6732d0e709413c9',
-      'up.gif' => '733fe173358fbd482b5745a3e6b2bf3c',
-      'up.png' => '2bfaa32e6b6c45767ff67961d7f6a758',
-      'upgrade.png' => '8a2a682aa0a1713cb627275c1e371714',
-      'user.png' => '2a791be6fdba60bd8ef16d04faf4e789',
-    ),
-    'icons' => 
-    array (
-    ),
-    'install' => 
-    array (
-      'install1.png' => 'c5cdc95dcb566d3a06dd9491773cb915',
-      'install2.png' => '3a4afe78d9167935869fd62c3e32e5c7',
-    ),
-    'link_icons' => 
-    array (
-      'admin.png' => 'a7376ea540f3ca4f721909bd0e6ae71b',
-      'bullet2.gif' => '5fea13d481fc903ce05bfed57341e1c1',
-      'icon1.png' => 'e931689a5df4fc129cb7edf515504411',
-      'icon2.png' => '861ef3bb6203bb98533f5e4ad01ead5e',
-      'icon3.png' => '7178378df49945353c4cf6cd5e0f8622',
-      'icon4.png' => '3f56677de2890d6db093b0091f8e5e35',
-      'icon5.png' => '62de66653d9f686f7087ee7807fdcfd8',
-      'star2.gif' => '6cb9803a392f283aa7761169df820809',
-      'star4.gif' => '20c59fcebfc2ad7f416afa46752ec89f',
-    ),
-    'log' => 
-    array (
-      'beos.png' => 'e81a347cde7806d403369acf5125c4fe',
-      'explorer.png' => 'ad4b2066d1a13c4c3f01771684de08bc',
-      'firebird.png' => 'aa7ab3a68f2321baccdda8c13d2ba051',
-      'firefox.png' => '2b1b1ceb660b824b9dbffd7eeacf79bb',
-      'freebsd.png' => '0cc1da48e638ee3549a53c459a0beaf1',
-      'konqueror.png' => '086c6a2215282b93a0d827b9208709d8',
-      'linux.png' => '336a3e40452886a7bfac345e8a261138',
-      'lynx.png' => 'bf674cc89d48c3edca70148befacfc0c',
-      'mac.png' => '3b5ceead951265dc1648d172fbdd6461',
-      'mozilla.png' => '3bac9ec175a9a1210fe69133658e7a79',
-      'netbsd.png' => '0cc1da48e638ee3549a53c459a0beaf1',
-      'netcaptor.png' => '2e4d9005519f6ce2b393dfd5957b16f8',
-      'netscape.png' => 'ef183a5383deb9cf83d90cde42efb24d',
-      'openbsd.png' => '36a1043bb8aacd3ea0a85c5f4de3130a',
-      'opera.png' => '8892071cd4ecb31298ec08373d1491dc',
-      'robot.png' => '4af563ba21dd39f7d875f4e4af4f3d60',
-      'spiders.png' => 'd74d7cf44e339255fbf66d5414f14db1',
-      'sunos.png' => '455c936a67729dd85ebec12b9c6139eb',
-      'unix.png' => 'eeddedaa7da41673f0ef6d3e60876dc0',
-      'unknown.png' => 'ff386748bec43130392f50ddf6743d57',
-      'unspecified.png' => 'ff386748bec43130392f50ddf6743d57',
-      'web%20indexing%20robot.png' => '4af563ba21dd39f7d875f4e4af4f3d60',
-      'windows.png' => '693b0f409fb73b8c688582cbf231de41',
-    ),
-    'newsicons' => 
-    array (
-      'admin.png' => 'a7376ea540f3ca4f721909bd0e6ae71b',
-      'icon1.png' => 'e931689a5df4fc129cb7edf515504411',
-      'icon2.png' => '861ef3bb6203bb98533f5e4ad01ead5e',
-      'icon3.png' => '7178378df49945353c4cf6cd5e0f8622',
-      'icon4.png' => '3f56677de2890d6db093b0091f8e5e35',
-      'icon5.png' => '62de66653d9f686f7087ee7807fdcfd8',
-      'null.txt' => 'd41d8cd98f00b204e9800998ecf8427e',
-    ),
-    'newspost_images' => 
-    array (
-    ),
-    'rate' => 
-    array (
-      'box' => 
-      array (
-      ),
-      'dark' => 
-      array (
-      ),
-      'lite' => 
-      array (
-      ),
-      '1.png' => '4b0844d8edcb6f21a30ccd614ce1f681',
-      '2.png' => '78f9dddde6747afdfe4d2ae74809c48b',
-      '3.png' => '0d94d295b5f76d02a3667f314f2e2e16',
-      '4.png' => '6bec72f755855b0f4bcad657627f2c8b',
-      '5.png' => 'f5fcf4a03e0e8a873421453fe9c8faa6',
-      '6.png' => '5f5e7867a7ab294c254490a97dbdb5e0',
-      '7.png' => '2c7386cf7b32d110795ede44b0649db1',
-      '8.png' => 'd831f36e9da9569a3ee9fc76ca744ab8',
-      '9.png' => '06a1a321bc60f7964ff49201187b6d6e',
-      'empty.png' => 'fba656dd42a4642df933475f41555579',
-    ),
-    'user_icons' => 
-    array (
-    ),
-    'logo3.png' => 'd4969f3e493bbf085b7b04db22fb66c3',
-  ),
-  'e107_install' => 
-  array (
-    'images' => 
-    array (
-      '01_bg.gif' => '50f03651c070e4138c97a4a7ee9e5339',
-      '01_bodybg.jpg' => 'ca5f9a092c397986fa10d5990023ab25',
-      '01_footer.jpg' => 'cf2f00b3e5a2aff05e70e728eb225cb4',
-      '01_hdot.gif' => '945bc76d6f25d2a32fafb0abe1933e1d',
-      '01_header01.jpg' => 'cb8f84e1d43a127604ea9b244ecab97e',
-      'bar.jpg' => 'deb2fd16258227f5e99fee0074b764af',
-      'bar2.gif' => 'eb85624e746f91fd33511783cccc92a6',
-      'bar2edge.gif' => '6d273a53798e532091bd6354f1e39c60',
-      'blank.gif' => '0e94b3486afb85d450b20ea1a6658cd7',
-      'bottom.png' => '46e798abeb638c4f9540973d239b10e7',
-      'bottomleft.png' => '3db4e800cc8add7f4f360c5f055aba49',
-      'bottomright.png' => '28a54110d855fd47380cf094d6b7b169',
-      'bullet1.gif' => 'f3e084e73fc80fea93ee8e11ffef4739',
-      'bullet2.gif' => '5fea13d481fc903ce05bfed57341e1c1',
-      'button.png' => '69918234a9caea763d1c66781e50fe34',
-      'cap1.png' => 'c58d5a7a23bb01572a51ca806cf244e0',
-      'capdark.png' => '968732d5e5ddfa288f59af2c47f5d4d7',
-      'capleft.png' => 'a1af1a726e1aee5e6e9822b9ccba1a48',
-      'caplight.png' => '159e80e78ab67ceb935eb084d8dc51ff',
-      'capright.png' => '57e7b70a495978f5de9575e826cd7878',
-      'captransition.png' => 'f762ef589c33ff9695bf4731eaf23738',
-      'fcap.png' => 'fabf58910351f1f742dee108b60517b8',
-      'fcap2.png' => '777e56bcaf32e29ad505df49f3cb6019',
-      'left.png' => 'a7755093080be75e9430072bd3bb32b3',
-      'pspbrwse.jbf' => 'e84c6e90a5babd91ff1705cdd904a60c',
-      'right.png' => '1dc657e1d9065920653132f3a85d77ed',
-      'temp.png' => '35e34c98922cf2df737eef3cec806af2',
-      'top.png' => '75b4e22fcbe8059bf217690e08c265ac',
-      'topleft.png' => '8b45a5185fa619c3d336e1ceb618bc81',
-      'topright.png' => '1c6d6e49a6d9d173ec12f2baed2f45a8',
-    ),
-    'defaults.php' => 'd74f7f56a35eaba3a446d0d7b9ece61e',
-    'forms_class.php' => 'cab82e1076617e73b142f89e589e6302',
-    'index.html' => 'd41d8cd98f00b204e9800998ecf8427e',
-    'install_template_class.php' => '85720230062e45ca3e6c190a865db9a1',
-    'installer_handling_class.php' => '43abe84e4f29d084e5aeb58f048585b3',
-    'installer_template.html' => '7c5c280e54ef3ffb337143513dbefdcf',
-    'style.css' => '78939dd07a01f44a78bb95f58e7999e5',
-    'writable_file_list.txt' => '65391cea1b3218eee4fc5e3535c4b6eb',
-  ),
-  $coredir['languages'] => 
-  array (
-    'Danish' => 
-    array (
-      'lan_install.php' => '7106553eaeb91ce1f59d0108dac9d579',
-    ),
-    'Dutch' => 
-    array (
-      'lan_install.php' => '1670683dbb0fb0d17f932ae81940a416',
-    ),
-    'English' => 
-    array (
-      'admin' => 
-      array (
-        'help' => 
-        array (
-          'article.php' => '3c7df3956134df9dfc86a4a67b73d78b',
-          'chatbox.php' => 'df26b116189f5c3b615311ee4fc2fdc6',
-          'content.php' => 'dcf60ff22635488c42b4a99243bdf9f2',
-          'custommenu.php' => 'bc2d5fff1395d8495a45b80da77b7665',
-          'forum.php' => '161249fcb72351dee1b5b56fda1a15be',
-          'link_category.php' => '5352ce360022a7fc0882fb77603405cb',
-          'list_menu_conf.php' => '88bd581ba21987493206e430885cd3f0',
-          'log.php' => '553fd4414b98f4aa5f0f6e1f8f7b0ad6',
-          'menus2.php' => '2249f7d8b325af8945ed1a5a3e9721e2',
-          'newsfeed.php' => '93f7ef1481d3fc59ecde4d40ad6b6c84',
-          'poll.php' => '3adef894abf1c1920a311899071ff8ee',
-          'review.php' => '6997e7c8d919246f698837c0ba3693b3',
-        ),
-        'lan_admin.php.bak' => 'c8bd5eb16d7834de1975b2ac3cd301e3',
-        'lan_article.php' => '78d8dba28058eb99e32fc670fed68f34',
-        'lan_chatbox.php' => 'dc7462a5fb63958528d842662b0c0d4c',
-        'lan_content.php' => '4b4dd166785d89b717ca41602e4908de',
-        'lan_custommenu.php' => 'fca295a0aaca7e6dc6ea2b07d3ab8474',
-        'lan_download_category.php' => '868e2a17778c821e21579b28c8e8db85',
-        'lan_forum.php' => '3ab28d049e7ef2900dd601deb02ab693',
-        'lan_forum_conf.php' => '208dd010683d2894d17ab734d712a270',
-        'lan_link_category.php' => '4dff35a95718cc5cffee64fc635dc19e',
-        'lan_log.php' => '6bf26c44f7553beeb8ce574de27dc29e',
-        'lan_news_category.php' => '5337d8c36701776b22c27182a258e690',
-        'lan_newsfeed.php' => 'bba9d1991b304ee031ac8f4339aa6a61',
-        'lan_poll.php' => '9bedcde5926715eede2f03afcff20a67',
-        'lan_review.php' => '36820722f27e35f1fe10edf238a13d93',
-        'lan_submenusgen.php' => '40af0cbb4906703d1fc5d29d7f2790e4',
-        'lan_submitnews.php' => '595ca7b58df223022b3f7bd44e8238f4',
-        'lan_theme_prev.php' => '003c8edea2f4b757347a231cd61868ba',
-        'lan_theme_prev.phpOLD' => 'af65c38f8c4bc38654b6fcddc83b2a29',
-      ),
-      'lan_article.php' => '7cb2200110e779d2be72b32b5adae9e4',
-      'lan_chat.php' => '1216025ec3eb4295cb7b7920d9c6d5f4',
-      'lan_content.php' => '175020e7d6e637c7c560c7b710e7da67',
-      'lan_equery_secure.php' => '90ce9b58fa3ee0bc424dc9eab0a9b92e',
-      'lan_forum.php' => 'ca5e1c87b06b0b4c76aa17222a2049b9',
-      'lan_forum_post.php' => 'e354153441043fabd0cdd6ed99be37a7',
-      'lan_forum_viewforum.php' => 'ae655efbf1d88f64a6f9436894767a64',
-      'lan_forum_viewtopic.php' => 'dc93aa81babfe0ee610d559d70f8681a',
-      'lan_install.php' => '6182909e4053d2da395298e4ca73323a',
-      'lan_links.php' => 'c309a9bc93d06a914bdc735efc9190cb',
-      'lan_newspost.php' => '03cca3bd4c3553accde4fe1b2bb9856a',
-      'lan_oldpolls.php' => '64379ca9ff42aaf1873b93bc41627fa7',
-      'lan_request.php' => '023a40948ec32b3359e9a5bae2b04f71',
-      'lan_sitemap.php' => '7d926f3eb3c81ed747a6682d4a9048a5',
-      'lan_stats.php' => 'f9058e0cd84a315f694618e2edf94d94',
-      'lan_subcontent.php' => '8307d6e57a66ad7df8a57777c1fdcb36',
-    ),
-    'Finnish' => 
-    array (
-      'lan_install.php' => '0f5a7f1603a519ee4456ec9fa1e7f8f9',
-    ),
-    'French' => 
-    array (
-      'lan_install.php' => '74ad3fd72cca13f1968785a89b6a09ad',
-    ),
-    'German' => 
-    array (
-      'lan_install.php' => 'c0e03443e52be1a6492e5b65776df1aa',
-    ),
-    'Hebrew' => 
-    array (
-      'lan_install.php' => '6f5fe3b0b3ba23463026f873453c98ab',
-    ),
-    'Portugese' => 
-    array (
-      'lan_install.php' => 'bfd10a1c0d92d1d5094a63d64aa9a809',
-    ),
-    'Portugese - Brazilian' => 
-    array (
-      'lan_install.php' => '4dcb400544c4cf60bf640d2418e15908',
-    ),
-    'Russian' => 
-    array (
-      'lan_install.php' => 'a99ce749efb53953f0121c71a88c9ae4',
-    ),
-  ),
-  $coredir['plugins'] => 
-  array (
-    'admin_menu' => 
-    array (
-      'languages' => 
-      array (
-        'English.php' => '9cc7dc759d47e98f86d2223097fb6dd8',
-      ),
-    ),
-    'alt_auth' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-        'English' => 
-        array (
-        ),
-        'ldap_auth_English.php' => '8553f2510a8f44e048e75b0caad969f6',
-      ),
-    ),
-    'alt_news' => 
-    array (
-    ),
-    'articles_menu' => 
-    array (
-      'languages' => 
-      array (
-        'English.php' => '559ed80821be94dbbae47b244dbd837d',
-      ),
-      'articles_menu.php' => 'fd15a3ca2e31528a95fc99184e440f63',
-      'articles_menu.phpOLD' => '879325102370b1fe12e4d7ccdfbb02a2',
-      'config.php' => '00b67a915d74fc094e077ea4466f7c2f',
-      'config.phpMAIN' => 'e72301f4e60ede3df654b0a32ffd07c1',
-    ),
-    'backend_menu' => 
-    array (
-      'languages' => 
-      array (
-        'English.php' => '2ceeff0b4fd187b6bc41f2c4112bec77',
-      ),
-      'backend_menu.php' => '3518985b836c9d8a0ba41966452d704d',
-    ),
-    'banner_menu' => 
-    array (
-      'languages' => 
-      array (
-      ),
-    ),
-    'blogcalendar_menu' => 
-    array (
-      'languages' => 
-      array (
-        'Dutch.php' => 'a5a25231f132dfe4b7f691e4ffeb684f',
-      ),
-    ),
-    'calendar_menu' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-      'log' => 
-      array (
-      ),
-      'search' => 
-      array (
-      ),
-      'calendar_menu.crc.gz' => '90580c372c43234e82c73fe1687611d4',
-      'config.php' => '401d559f53265f4b1778701b8e9dd512',
-      'readme.pdf' => 'bde9420355a7306b71df8c5143575347',
-      'readme.rtf' => '47f6de1137030fe2efde782133ab725f',
-    ),
-    'chatbox_menu' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-        'English' => 
-        array (
-        ),
-        'English.php' => '89c8271c28118aae2dbbe8f35adc9f9f',
-      ),
-      'search' => 
-      array (
-      ),
-    ),
-    'clock_menu' => 
-    array (
-      'languages' => 
-      array (
-        'admin' => 
-        array (
-        ),
-      ),
-    ),
-    'comment_menu' => 
-    array (
-      'languages' => 
-      array (
-      ),
-    ),
-    'compliance_menu' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-    ),
-    'content' => 
-    array (
-      'handlers' => 
-      array (
-      ),
-      'images' => 
-      array (
-        'cat' => 
-        array (
-          16 => 
-          array (
-          ),
-          48 => 
-          array (
-          ),
-        ),
-        'file' => 
-        array (
-          'tmp' => 
-          array (
-          ),
-        ),
-        'icon' => 
-        array (
-          'tmp' => 
-          array (
-          ),
-        ),
-        'image' => 
-        array (
-          'tmp' => 
-          array (
-          ),
-        ),
-        'redo.png' => 'df3dd61d416b00c26d3cbcdf02e862b4',
-      ),
-      'languages' => 
-      array (
-        'English' => 
-        array (
-        ),
-      ),
-      'menus' => 
-      array (
-      ),
-      'search' => 
-      array (
-      ),
-      'templates' => 
-      array (
-        'default' => 
-        array (
-        ),
-      ),
-      'help.php' => '950985bb6c445147d901bb4fb00b0f1d',
-    ),
-    'counter_menu' => 
-    array (
-      'languages' => 
-      array (
-      ),
-    ),
-    'custom' => 
-    array (
-      'Readme.txt' => '2a5a677029c6a1ff8f31f3cd24452386',
-    ),
-    'custompages' => 
-    array (
-      'Readme.txt' => 'fe1235ad725e996d9f123fdb4e4c13e8',
-    ),
-    'fader_menu' => 
-    array (
-      'images' => 
-      array (
-        'logo.png' => 'bcaf473988c4b267a7dcf56949a452eb',
-      ),
-      'languages' => 
-      array (
-        'English.php' => '33f3cf5b3c8706af602ed4cb3c81db9c',
-      ),
-      'config.php' => '0aabe62b3e1611c441e9a2c2114cd5cf',
-      'fader_menu.php' => '66caa671ec5bafd3fe27b4d2b5e4f6d9',
-      'plugin.php' => '242e63190113a2aa45358d7cb3b7535c',
-    ),
-    'featurebox' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-      'templates' => 
-      array (
-      ),
-    ),
-    'forum' => 
-    array (
-      'images' => 
-      array (
-        'dark' => 
-        array (
-        ),
-        'lite' => 
-        array (
-        ),
-      ),
-      'languages' => 
-      array (
-        'English' => 
-        array (
-        ),
-      ),
-      'search' => 
-      array (
-      ),
-      'templates' => 
-      array (
-      ),
-    ),
-    'gsitemap' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-    ),
-    'headlines_menu' => 
-    array (
-      'languages' => 
-      array (
-        'English.php' => '2829e43dff89716317f5e07b2c9be60b',
-      ),
-      'headlines_menu.php' => 'ab3e7718b4bdc0692766939d1cce00bc',
-    ),
-    'integrity_check' => 
-    array (
-      'crc' => 
-      array (
-        'core_v0.603brevision #6.crc.gz' => '951d6ff1eb9b511e9de413fda1025fd0',
-        'core_v0.604b0.crc.gz' => '1b1d32dcd6b5748f5f61c1ae3ed75f60',
-        'core_v0.605b0.crc.gz' => 'cfcbd7b968e01b4d7085b993c2edc2fd',
-        'core_v0.606b0.crc.gz' => 'a507b39e47b6bd4da410800674f18b0e',
-        'core_v0.607b0.crc.gz' => 'd462a23b24951c04630d98fbdaaa303e',
-        'core_v0.608b0.crc.gz' => '8d28c1a7ed767f3b1f37fc2e5d42a7c4',
-        'core_v0.609b0.crc.gz' => '619d9fb859dcebee7335b107df732989',
-        'core_v0.610b0.crc.gz' => '40b629b94d1942330c3d6a00d9eb3928',
-        'core_v0.611b0.crc.gz' => 'd2fa16d9224fe1582e926dab65fd7974',
-        'core_v0.612b0.crc.gz' => '417f80d506105f093852f6ac444401d8',
-        'core_v0.613b0.crc.gz' => '10ee72857c69cee04b32c9713d0854ee',
-        'core_v0.614b0.crc.gz' => '8dc89467864a96ba78930ed1a8be086f',
-        'core_v0.616b0.crc.gz' => 'ff549280c337968ac0ba94797a8713c6',
-        'core_v0.617b20040917.crc.gz' => '772181b8a467cb436be8e70b5d792e36',
-      ),
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-        'German.php' => 'e89edc419022cf2407fb101d3eab899f',
-      ),
-      'do_core_file.php' => 'fac13bd2f065a031c59841ab4cb7074e',
-      'integrity_check.crc.gz' => 'd5cec3024c3e3a0be2cca541bd60d179',
-      'integrity_check.php' => '49d5a8fa37a78f8716cb5e86d77337c0',
-    ),
-    'lastseen' => 
-    array (
-      'languages' => 
-      array (
-      ),
-    ),
-    'links_page' => 
-    array (
-      'cat_images' => 
-      array (
-      ),
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-      'link_images' => 
-      array (
-      ),
-      'search' => 
-      array (
-      ),
-      'help.php' => 'a8495b50a8243ebbb3e37c8bcb169184',
-    ),
-    'linkwords' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-    ),
-    'list_new' => 
-    array (
-      'icon' => 
-      array (
-      ),
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-      'section' => 
-      array (
-      ),
-      'new.php' => '8c374be27e41a4318f68e707021ff984',
-    ),
-    'log' => 
-    array (
-      'images' => 
-      array (
-        'trans.gif' => '39bc952559e5a8f4e84ba035fb2f7390',
-      ),
-      'languages' => 
-      array (
-        'admin' => 
-        array (
-        ),
-      ),
-      'logs' => 
-      array (
-      ),
-    ),
-    'login_menu' => 
-    array (
-      'languages' => 
-      array (
-      ),
-    ),
-    'newforumposts_main' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-      'config.php' => '276457a4bf2fa83ea6562797782310a6',
-    ),
-    'newforumposts_menu' => 
-    array (
-      'languages' => 
-      array (
-        'English.php' => '693095a9bd834689047de027f5e0cbbd',
-      ),
-      'config.php' => 'f01b9da7574412da71f6182494f33e1a',
-      'newforumposts_menu.php' => '2cccc461e0dcea560a8d60cbf6923cb8',
-    ),
-    'newsfeed' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-      'templates' => 
-      array (
-      ),
-      'help.php' => '7942458e34eb69cdad92cc7d9454f626',
-    ),
-    'newsletter' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-    ),
-    'online_extended_menu' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-    ),
-    'online_menu' => 
-    array (
-      'languages' => 
-      array (
-      ),
-    ),
-    'other_news_menu' => 
-    array (
-      'languages' => 
-      array (
-      ),
-    ),
-    'pdf' => 
-    array (
-      'font' => 
-      array (
-        'makefont' => 
-        array (
-        ),
-      ),
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-    ),
-    'pm' => 
-    array (
-      'attachments' => 
-      array (
-      ),
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-        'admin' => 
-        array (
-        ),
-      ),
-    ),
-    'pm_menu' => 
-    array (
-      'images' => 
-      array (
-        'icon_pm.png' => '2912f05d43fd9f1aa7e5561f01f03d49',
-        'new.png' => '2bbd79241cf8036164e9965055b6f8b3',
-        'newpm.gif' => '4d16f5fbaa8e76067053c8c901972bc4',
-        'nonew.png' => '5fe81217e3c6f672a4e2f2922ddbe1c6',
-      ),
-      'languages' => 
-      array (
-        'admin' => 
-        array (
-          'Dutch.php' => 'deaec186998741c967926a2b4a2c8883',
-          'English.php' => '48e55f333c6cce298d8d42d23ac1ea86',
-          'French.php' => 'afada3c05cd276a42b3ea2c0143cc4eb',
-          'Hebrew.php' => '99a11d649976ca09269ba710331692a1',
-          'Hungarian.php' => '24c9bee3429ab4cb0310dbf53bdf46a7',
-          'Lithuanian.php' => '46ff3c0d24248c463bc1d4565ed8ae60',
-          'Swedish.php' => '36db180754f4fc798d801b809afb30c6',
-        ),
-        'Danish.php' => '0fd270f1290f030df0923b51c8e758d5',
-        'Dutch.php' => '70c30863dc1e573e57b29e7ea833fe86',
-        'English.php' => '3a1f134f8dfab0d6e9bd01affac61360',
-        'French.php' => '95edb5e8ee1adbef13968f678013a1c7',
-        'German.php' => '9777ec58ad0ba9749bf67a6fc90aad92',
-        'Hebrew.php' => 'f924ee08fd163ca1b5d8a0971c37350a',
-        'Hungarian.php' => '0bc057bb44fe3472db8782edbba65152',
-        'Icelandic.php' => 'fd660d11befa4952c4389e119311552c',
-        'Italian.php' => '5b1d9585320a00d8dc302c6b1d152dd2',
-        'Lithuanian.php' => '6de02c868fcf76f6eafa4d286139f51e',
-        'Swedish.php' => '89c03081c1f1bd395d8ef118034205f3',
-        'Turkish.php' => '8c3f69574f0a1b7967942bcccd81ce63',
-      ),
-      'parse' => 
-      array (
-        'parse_sendpm.php' => '684f65074a3c163bff33ceee2f60d77f',
-      ),
-      'help.php' => '05353ac9d91d7a289b949cd221209391',
-      'parser.php' => 'a3b9072ded8b976ec8e6a39fb1ec62a1',
-      'plugin.php' => 'e00be629dba8699c216a32717499e4c6',
-      'pm.php' => '854e2027e899d6fe2f61c34b4ec7c231',
-      'pm_class.php' => 'ceb78bfec4fa5d4858f3c6bdd96518f6',
-      'pm_conf.php' => '6356e8c2401e0f56bf3c2d765fc22c7e',
-      'pm_finduser.php' => 'f0f76ad2058a553e71565a514d5e5792',
-      'pm_inc.php' => '884be6eeb255e9896af2df673ed11838',
-      'pm_menu.php' => 'c0cb0fdf9a22d73ec4c296181a63bb9b',
-      'pm_readme.txt' => 'f8a601545af5083601733d9b2f317185',
-      'pm_sql.php' => '3bf115628a81235de959588024d9b06d',
-    ),
-    'poll' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-      'search' => 
-      array (
-      ),
-      'templates' => 
-      array (
-      ),
-    ),
-    'poll_menu' => 
-    array (
-      'languages' => 
-      array (
-        'English.php' => '75af431da617ae283526e043ba4f3c02',
-      ),
-      'poll_menu.php' => 'c2da89e8e0917e9fdc6d472c8427eade',
-    ),
-    'powered_by_menu' => 
-    array (
-      'languages' => 
-      array (
-      ),
-    ),
-    'review_menu' => 
-    array (
-      'languages' => 
-      array (
-        'English.php' => '7593a048368d0addb3e47bddc9026067',
-      ),
-      'config.php' => '3775094f836031f6027990847d9ebef2',
-      'review_menu.php' => '70f03130e54f35d210a4eb1c8419ce51',
-    ),
-    'rss_menu' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-      'rss_meta.php' => '7205d95791b223ce785e95b0fda76c5a',
-    ),
-    'search_menu' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-    ),
-    'sitebutton_menu' => 
-    array (
-      'languages' => 
-      array (
-      ),
-    ),
-    'theme_layout' => 
-    array (
-      'images' => 
-      array (
-        'icon.png' => 'ff19586caf182a0c7cf7cfbc1a074de4',
-      ),
-      'layouts' => 
-      array (
-        'layout1_chatbox.php' => 'b1db2075c5c7ea9f9b2c4f1597d08435',
-        'layout1_comment.php' => 'ff0e3640109d2a025e1faf2e5581ec01',
-        'layout1_forum.php' => '74047e347e584a4533319d7d0593bdb5',
-        'layout1_main.php' => 'a65dc381f0e34fa3285f09720db06442',
-        'layout1_news.php' => '6a36222bfc1e5df83753406ad14f0272',
-        'layout1_poll.php' => '7298986d8189dcb866253b8526fed945',
-      ),
-      'chatbox_layout.php' => '6e16ab5944c40af2d49a1e97bf00b0f8',
-      'comment_layout.php' => '94eae619f29d869141caad9bd75cac24',
-      'forum_layout.php' => '9e701c700316d8f2136f7343b2aa1566',
-      'help.php' => 'a9dd8718eb1cff858c8a8ea9cd430fb5',
-      'main_layout.php' => 'd348abf32cdf27bb2eb744771eea5ff7',
-      'news_layout.php' => '6d609361cfedd501e23cdd4a90cc1e27',
-      'poll_layout.php' => '327e6500d7df79f36e06c700aa413c1f',
-      'theme.php' => 'd028142e833595ed508966fc37593659',
-      'theme_layout.php' => '1ef564f5bfa15e9974c3018da2560688',
-    ),
-    'trackback' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-    ),
-    'tree_menu' => 
-    array (
-      'languages' => 
-      array (
-      ),
-    ),
-    'userlanguage_menu' => 
-    array (
-      'languages' => 
-      array (
-      ),
-    ),
-    'usertheme_menu' => 
-    array (
-      'languages' => 
-      array (
-        'French.php' => 'd21ea52501b9efc12e86d3577cb7186f',
-        'usertheme_English.php' => '675a4f2690d5771613818338502eb4c5',
-        'usertheme_French.php' => 'd21ea52501b9efc12e86d3577cb7186f',
-      ),
-    ),
-  ),
-  $coredir['themes'] => 
-  array (
-    'blue_patriot' => 
-    array (
-      'images' => 
-      array (
-        'balloon.jpg' => '64dc97bcb2ba327399ae75905800f4e6',
-        'bar.jpg' => 'a6db2ab78d920a41f003a0c31e688199',
-        'blue_patriot_01.jpg' => '7831ce0cb8eb13b4ea1a92adbdab9d62',
-        'blue_patriot_02.jpg' => 'ac12826a6e0a05b9c070c5521161f120',
-        'blue_patriot_03.jpg' => 'c3411aaea64f1ccbd45dd412b7a2467c',
-        'blue_patriot_04.jpg' => 'ac3b851650183ac0d47b41472afcdecf',
-        'blue_patriot_05.jpg' => '0dfcd5f3553aa7e5d3df05dd13629e61',
-        'blue_patriot_06.jpg' => '15b839a9fd716900dd4cf603bff890e8',
-        'blue_patriot_07.jpg' => 'f71799048ccf41e6fc6689f3f609e2db',
-        'blue_patriot_08.jpg' => '5619bba0856394e207e8e39a6670dc50',
-        'blue_patriot_09.jpg' => 'ffec8e1466bbdc30c3c7a15e4cb7727b',
-        'blue_patriot_10.jpg' => '9f486fba3969a36958bbfc1ecb4f9851',
-        'blue_patriot_11.jpg' => '6c2c5e0ad28eb6f70775f9ee64d5b8d7',
-        'blue_patriot_12.jpg' => '5b5775e1043b999729199c4c27f43974',
-        'blue_patriot_13.jpg' => '557e9b1c1cf68dfb1b51969f6ada6fd4',
-        'blue_patriot_14.jpg' => 'bca587141e6745d02447526574e1b9c2',
-        'blue_patriot_15.jpg' => '99a9e333f4cccf0fcd79679864de9346',
-        'blue_patriot_16.jpg' => '71f45abb20a470dbb7b1f05571b9d165',
-        'blue_patriot_17.jpg' => '2955f18ffa7e16c441b17feaa3b6bcca',
-        'blue_patriot_18.jpg' => 'd7c7faf35abfd47fcd387a1745d4e5b3',
-        'blue_patriot_19.jpg' => '16f1986bb5658c5ef33916092760702c',
-        'blue_patriot_20.jpg' => '775a338453d65e0f8e6982b541ccbb95',
-        'blue_patriot_21.jpg' => 'afffe79cf460ce63991c5e85dbf116ba',
-        'blue_patriot_22.jpg' => 'd07ee234e9a0f53999ef60105591da82',
-        'blue_patriot_23.jpg' => 'd33fd108f4828402b9dbb710f29ac2b2',
-        'blue_patriot_24.jpg' => '430faa6d08785afe5254974c08407461',
-        'blue_patriot_25.jpg' => 'd005d6c8d1df0ef80cd308cecf6f8cff',
-        'blue_patriot_26.jpg' => '7f704f010bfb3fd6291a3b6a9ee465ba',
-        'blue_patriot_27.jpg' => '6852500646a0a40f845d29a9998e965d',
-        'blue_patriot_28.jpg' => '1fc8fe28545213a22cce040331db573b',
-        'blue_patriot_29.jpg' => '698df200ff09414407fcc0c84ee74926',
-        'blue_patriot_30.jpg' => 'fdd019a93a7d605d47dfa51ab6e965cc',
-        'blue_patriot_31.jpg' => '27d3aab176590dab3458102d865aed21',
-        'blue_patriot_32.jpg' => '1cee9c979aee7d52bcdf47f0fd1a1756',
-        'blue_patriot_33.jpg' => '802673dea5d6b3318392267cfbe798b4',
-        'blue_patriot_34.jpg' => '4a26464b5b3b2c4fd3621be82506bca9',
-        'blue_patriot_35.jpg' => '48f2693b73a17381db62d36836958406',
-        'blue_patriot_36.jpg' => 'abf7188d7973f01a9f255174ddfddf20',
-        'blue_patriot_37.jpg' => 'dbf963f8163715e98d74c0beb3af2d8a',
-        'blue_patriot_38.jpg' => 'a69c3868b52ceabecde8e10eed6ca0e6',
-        'blue_patriot_39.jpg' => 'd4409c49b7b9fe7ff945a25df0c90395',
-        'blue_patriot_40.jpg' => '623d4acd8692a8d5d91ced7108ec84e7',
-        'bodybg.jpg' => 'cf7b94186d42ddb69a007fe7d6a5a2bd',
-        'bullet2.gif' => 'de856ab1707989549981594c40ac0b0d',
-        'captionbg.jpg' => '3cfcfda4fa37a1dd9800bd2f8ff37b11',
-        'sm_folder.jpg' => 'f8de850ff6da330959af2431eb2b83fa',
-      ),
-      'style.css' => '4eeeebf4cc2410e55cc6d0015a7b2dcb',
-      'theme.php' => '522ceddf68bff62ff177e83d291b7b65',
-    ),
-    'clan' => 
-    array (
-      'forum' => 
-      array (
-        'admin_delete.png' => '707ddc11a86975090610a76e8ad01923',
-        'admin_edit.png' => 'a383175b504d64e64a84a21dda5c1619',
-        'admin_lock.png' => '744c74fecf65bd64d4ee22681cf6bd11',
-        'admin_move.png' => 'c892805676f983c34dbf308eeb2627c7',
-        'admin_stick.png' => 'ef0bc1380cdbd26118c6c53272e46af6',
-        'admin_unlock.png' => '1818d0d48dfe5f76c8bf3cee9d9e949c',
-        'admin_unstick.png' => '8b57798a150aff163c35a9e2a7c1ff62',
-        'announce.png' => '51274830e593a079d57c3213da0b97ab',
-        'closed.png' => '661d62b0359cece8ea019268aea90b72',
-        'closed_small.png' => '23df1d00ed2742c32f08664b39ebe5e4',
-        'delete.png' => 'b9fc374f973e51f45c80884b56cab7c0',
-        'e.png' => '5c4648034ca4494db00270b4f73cb4e9',
-        'edit.png' => '1dfc36a823e1752f2aef6fce3d4ab4d8',
-        'email.png' => 'f76baf56d637b8918f686345cd3ca7d2',
-        'fcap.png' => '35e09d61f248d03d9ae67ff46f6e5a91',
-        'finfobar.png' => '71585c0c2d3340ece8cf769a135286b9',
-        'moderator.png' => 'dc487b54b9dbbc1fc834a8ef882adea8',
-        'new.png' => '63c68b98a1ebf395a58c194688665404',
-        'new_popular.gif' => '3c47023ff01dc15fb3a678cb21cf55ad',
-        'new_small.png' => 'df5d599ecd2bdcc93d576d552b71a54c',
-        'newthread.png' => '0b580ca6d9cd6fd514c7ac3bb3b1c171',
-        'nonew.png' => '7833bd100df8495e076dfaf400d1afb3',
-        'nonew_popular.gif' => 'bd77c2f2b42336d5690646d4006ea983',
-        'nonew_small.png' => '2544ba225c65f82c7788b003edb2d1fe',
-        'post.png' => '4abd6992f5bcb6c624ce670468ff538a',
-        'profile.png' => 'd533f49ea50c756a6f61db3ae87ae8b1',
-        'quote.png' => 'fd587e1696430999022aa2e6dd765904',
-        'reply.png' => 'f7004bc6a716839bb4e803a4f08470ce',
-        'sticky.png' => '31f95734f8ddea70f1532658cc123e24',
-        'stickyclosed.png' => '0d8232ce1f8854a81a8832560fe47d4a',
-        'website.png' => '882b8448acefe7857e31639a78acb47e',
-      ),
-      'images' => 
-      array (
-        'bar.jpg' => '699a527e29ee1fee2932255d76c095fa',
-        'bar2.gif' => '7a3ae76cbf5e376e3e86eb01aaadefba',
-        'bar2edge.gif' => '75b67e121016a521b1b975f3ead317a4',
-        'bullet1.gif' => '097e3c018ae655310889fa98f85be57b',
-        'bullet2.gif' => '026bd38853b2fc24353da648893737e5',
-        'cap.png' => '32a40d90d55b3fc92350e3437ec79d7e',
-        'cap2.png' => 'f56be37f5bb99b498a354762e1fac575',
-        'header.png' => '200d62810e3f06bf792e920bcdce1d30',
-        'logo.png' => 'bc9ceb041746cc1a021af2ed19002663',
-        'menubg.png' => 'c23f21ecfb2ea65d9870e155058fb5b0',
-        'topbar.png' => 'cf65e56f37871f04f3ce83337ae123e7',
-      ),
-      'style.css' => 'b9acced713fc611ec3c94abdbf5a6bcd',
-      'theme.php' => '88af12095e58d509e387eea822d36c0a',
-    ),
-    'comfort' => 
-    array (
-      'forum' => 
-      array (
-        'admin_delete.png' => '36fe015a4b8cfdbbe4b8aee8b7b563a7',
-        'admin_edit.png' => 'c03274b7f9e16ac1cb702ae8db849f7e',
-        'admin_lock.png' => 'e77b92a1f5877b64b9ccad7cf30b798d',
-        'admin_move.png' => '53724301fb9a5f735d47986feabaa5c2',
-        'admin_stick.png' => 'a3f08da8ab9eda3985365793ff91caf5',
-        'admin_unlock.png' => 'abbe887ff2c94e0fc7ccc6ec76e33e2f',
-        'admin_unstick.png' => '61807d0afc335e394bd9050157eae4c5',
-        'announce.png' => '51274830e593a079d57c3213da0b97ab',
-        'closed_small.png' => '23df1d00ed2742c32f08664b39ebe5e4',
-        'delete.png' => 'b9fc374f973e51f45c80884b56cab7c0',
-        'e.png' => '797612f8767a25e9a934580f7d778ef5',
-        'edit.png' => 'dc9067455b48da0bbc50993a4217eedd',
-        'email.png' => 'bd759f54b3496efb62529a08c2b15116',
-        'fcap.png' => 'fa0919ce75dbdcb15cf7e651d5842415',
-        'fcap2.png' => '2c1e274a0b58e66d9cc36a08df4d20c9',
-        'finfobar.png' => '71585c0c2d3340ece8cf769a135286b9',
-        'moderator.png' => 'dc487b54b9dbbc1fc834a8ef882adea8',
-        'new.png' => '2bbd79241cf8036164e9965055b6f8b3',
-        'new_popular.gif' => '3c47023ff01dc15fb3a678cb21cf55ad',
-        'new_popular.png' => '610f65b2547cdd8fd22fdf6903f90f61',
-        'new_small.png' => '7ccbd065e0bb7baff3bca315f2e7989e',
-        'newthread.png' => '2d08a2071204a9a9b4766969704b8fee',
-        'nonew.png' => '5fe81217e3c6f672a4e2f2922ddbe1c6',
-        'nonew_popular.gif' => 'bd77c2f2b42336d5690646d4006ea983',
-        'nonew_small.png' => '948a5a7b2bcb069fd17dcd0c467ce2b5',
-        'post.png' => '5212304c8b38fb4033ddf691fd7b77ba',
-        'profile.png' => 'ed21e84603c3bcf82eb1820235c36075',
-        'quote.png' => '579d14bfb1faabf191272938fae3ab65',
-        'reply.png' => 'ba0faaf5b9a0c9e4edafc921a049739f',
-        'sticky.png' => 'c5bb0a20ef02bf8e52f3a93907804f20',
-        'stickyclosed.png' => '810fb2dee4cf3d593f5a50031a52cde8',
-        'website.png' => '568b5e9dcc6fcc5067209e9390297162',
-      ),
-      'images' => 
-      array (
-        'bar.jpg' => '13b2cb049602ff94d0d80a0e0896d8e9',
-        'bar2.gif' => '7a3ae76cbf5e376e3e86eb01aaadefba',
-        'bar2edge.gif' => '30f11ad7f707603148a90c4197c5b195',
-        'bg.gif' => '058052ed6c5234762c53f70b0001fb92',
-        'bullet1.gif' => 'f3e084e73fc80fea93ee8e11ffef4739',
-        'bullet2.gif' => '5e3525d341b9a47c514b094e9a5395a7',
-      ),
-      'style.css' => '6bbba211070fa8517ee4b8a6d3c26e7e',
-      'theme.php' => 'edba9bf51ddd484b9d77ffdb0c9c3a1c',
-    ),
-    'comfortless' => 
-    array (
-      'forum' => 
-      array (
-        'admin_delete.png' => '36fe015a4b8cfdbbe4b8aee8b7b563a7',
-        'admin_edit.png' => 'c03274b7f9e16ac1cb702ae8db849f7e',
-        'admin_lock.png' => 'e77b92a1f5877b64b9ccad7cf30b798d',
-        'admin_move.png' => '53724301fb9a5f735d47986feabaa5c2',
-        'admin_stick.png' => 'a3f08da8ab9eda3985365793ff91caf5',
-        'admin_unlock.png' => 'abbe887ff2c94e0fc7ccc6ec76e33e2f',
-        'admin_unstick.png' => '61807d0afc335e394bd9050157eae4c5',
-        'announce.png' => '51274830e593a079d57c3213da0b97ab',
-        'closed_small.png' => '23df1d00ed2742c32f08664b39ebe5e4',
-        'delete.png' => 'b9fc374f973e51f45c80884b56cab7c0',
-        'e.png' => '22d175dba98b439b73d17da6cd142adf',
-        'edit.png' => 'dc9067455b48da0bbc50993a4217eedd',
-        'email.png' => 'bd759f54b3496efb62529a08c2b15116',
-        'fcap.png' => 'fa0919ce75dbdcb15cf7e651d5842415',
-        'fcap2.png' => '2c1e274a0b58e66d9cc36a08df4d20c9',
-        'finfobar.png' => '71585c0c2d3340ece8cf769a135286b9',
-        'moderator.png' => 'dc487b54b9dbbc1fc834a8ef882adea8',
-        'new.png' => '2bbd79241cf8036164e9965055b6f8b3',
-        'new_popular.gif' => '3c47023ff01dc15fb3a678cb21cf55ad',
-        'new_small.png' => 'efb0e1cd78edb0a66d8e83c245e0f0d5',
-        'newthread.png' => '3b51e035b6cb3579d955372de1b36934',
-        'nonew.png' => '5fe81217e3c6f672a4e2f2922ddbe1c6',
-        'nonew_popular.gif' => 'bd77c2f2b42336d5690646d4006ea983',
-        'nonew_small.png' => '887892198ae123a03df21132e08c6964',
-        'post.png' => '5212304c8b38fb4033ddf691fd7b77ba',
-        'profile.png' => 'ed21e84603c3bcf82eb1820235c36075',
-        'quote.png' => '579d14bfb1faabf191272938fae3ab65',
-        'reply.png' => '26ff2128f3e5b5c985c688118015b69f',
-        'sticky.png' => 'c5bb0a20ef02bf8e52f3a93907804f20',
-        'stickyclosed.png' => '810fb2dee4cf3d593f5a50031a52cde8',
-        'website.png' => '568b5e9dcc6fcc5067209e9390297162',
-      ),
-      'images' => 
-      array (
-        'bar.jpg' => '13b2cb049602ff94d0d80a0e0896d8e9',
-        'bar2.gif' => '7a3ae76cbf5e376e3e86eb01aaadefba',
-        'bar2edge.gif' => '30f11ad7f707603148a90c4197c5b195',
-        'bg.gif' => '058052ed6c5234762c53f70b0001fb92',
-        'bullet1.gif' => 'f3e084e73fc80fea93ee8e11ffef4739',
-        'bullet2.gif' => '5e3525d341b9a47c514b094e9a5395a7',
-      ),
-      'style.css' => '92e3bf1e539749704b1fcb013d9df71a',
-      'theme.php' => '58fecc858bb054ae7a71bc79ea12c5b7',
-    ),
-    'crahan' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-    ),
-    'e107' => 
-    array (
-      'images' => 
-      array (
-        'bar.jpg' => 'a6db2ab78d920a41f003a0c31e688199',
-        'bar2.gif' => '7a3ae76cbf5e376e3e86eb01aaadefba',
-        'bar2edge.gif' => '75b67e121016a521b1b975f3ead317a4',
-        'bullet1.gif' => '097e3c018ae655310889fa98f85be57b',
-        'bullet2.gif' => 'd6e34836e1e3270c3fe06557f9b93d9d',
-        'button.png' => '5a1a29b5670e03697659581da597b5fc',
-        'cap.png' => 'b439047ea62b69e3569cc70999ff6e5f',
-        'header.png' => '200d62810e3f06bf792e920bcdce1d30',
-        'installlogo.png' => '3cd312e939be5dbb073ce76a3116231d',
-        'logo.png' => '346418f2f391f029e9b83c854b74b1d7',
-      ),
-      'style.css' => 'e92d7179f04ee8849024a9af22877d0b',
-      'theme.php' => '39270d4c1c77ac7f34373d7fdb452984',
-    ),
-    'e107v4a' => 
-    array (
-      'images' => 
-      array (
-        'bar2.gif' => 'eb85624e746f91fd33511783cccc92a6',
-        'bar2edge.gif' => '6d273a53798e532091bd6354f1e39c60',
-      ),
-      'languages' => 
-      array (
-      ),
-      'forum_design.php' => '6afe8b9762a01cad599d77c37d54bf80',
-    ),
-    'example' => 
-    array (
-      'images' => 
-      array (
-        'bar.jpg' => 'a6db2ab78d920a41f003a0c31e688199',
-        'bar2.gif' => '7a3ae76cbf5e376e3e86eb01aaadefba',
-        'bar2edge.gif' => 'd3ef60cb45ff91968ce65db5b49b985b',
-        'bullet1.gif' => '097e3c018ae655310889fa98f85be57b',
-        'bullet2.gif' => 'd6e34836e1e3270c3fe06557f9b93d9d',
-        'cap.png' => '736f4166b8ecd0c1a8f031e336657c5e',
-        'header.png' => '200d62810e3f06bf792e920bcdce1d30',
-        'logo.png' => '346418f2f391f029e9b83c854b74b1d7',
-      ),
-      'style.css' => '64dfcfe7f8a5dd55d755d00f751fa97c',
-      'theme.php' => '6b0cdd3e6833728e44772a8c8722724f',
-    ),
-    'fiblack3d' => 
-    array (
-      'images' => 
-      array (
-        'bar.jpg' => 'a87f6df0dc62f6059164a784e48605f3',
-        'bar2.gif' => '7a3ae76cbf5e376e3e86eb01aaadefba',
-        'bar2edge.gif' => '75b67e121016a521b1b975f3ead317a4',
-        'blank.gif' => '0e94b3486afb85d450b20ea1a6658cd7',
-        'bottomleft.png' => '258e3e69e770bbeacde6264051d8ac5c',
-        'bottommiddle.png' => '356edf3b2e72b9991576d8cdc1269a1f',
-        'bottomright.png' => 'd9b376c57987219f22b86737e6068080',
-        'bullet1.gif' => '097e3c018ae655310889fa98f85be57b',
-        'bullet2.gif' => 'f7a33fe24f02eb54392eb094b6ded7de',
-        'bullet3.gif' => 'b2cc886c34040cd25e787819e20433f2',
-        'button.png' => '5a1a29b5670e03697659581da597b5fc',
-        'cap.png' => 'b439047ea62b69e3569cc70999ff6e5f',
-        'cap1.gif' => '9ad552a50c8425d6c1d8d766216c1093',
-        'fcap.png' => 'c398adcd3acaa56b3b0168fe63140363',
-        'fcap2.png' => '484bca31074eacfc1b1689437780d987',
-        'g_head.gif' => 'e5b7c8416887f1c7d8d9427763072117',
-        'header.png' => '200d62810e3f06bf792e920bcdce1d30',
-        'left.png' => '96c753c33cf6d69d093120448681a510',
-        'logo.jpg' => 'a2a402adf9ec65f2abe9c5a141791d1e',
-        'logo2.png' => '867f8d31edb08e05bf3540cc03eedd2f',
-        'nforumcaption.png' => '18a5f435d48bdeb8e036af0020f8ed26',
-        'nforumcaption2.png' => '9864c81acddb5f2d2e792738e1468f4e',
-        'right.png' => 'fe20a5ed232fdb263b20b12e74ea34e2',
-        'sb_template.png' => '05d718c4d7ffff4cb4a39e1fe3098a13',
-        'tbbg.png' => '418dea906f043bd84f108e701921d53f',
-        'topleft.png' => '1d78bbdc0e9802cf3067eeb3efcf1a5a',
-        'topmiddle.png' => '875f5c3a51b520a8684a36e55bc412da',
-        'topright.png' => '5be0284fbb41ff6987b64cfb783e7c7d',
-        'y_head.gif' => '052f449cda374ade80ee10df09ecd227',
-      ),
-      'style.css' => 'd398533bd3d96e28ee03af6430dacbce',
-      'theme.php' => 'fdd24c507722ddbb56cd10d77c0c7c7a',
-    ),
-    'human_condition' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-    ),
-    'interfectus' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-    ),
-    'jayya' => 
-    array (
-      'forum' => 
-      array (
-        'stickyclosed.png' => '79cb1b7e7a1ae3f9d42cf3ec4bf57fc3',
-      ),
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-    ),
-    'khatru' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-      'nexter.css' => '9290a07f99bb3d5068a3e6a3a580d325',
-    ),
-    'kubrick' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-      'nicetitle.js' => '81658d0b559af2fb4c0ad27b8ffb9a0d',
-    ),
-    'lamb' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-    ),
-    'leaf' => 
-    array (
-      'fontstyles' => 
-      array (
-      ),
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-    ),
-    'leap of faith' => 
-    array (
-      'images' => 
-      array (
-        'bar.jpg' => 'deb2fd16258227f5e99fee0074b764af',
-        'bar2.gif' => 'eb85624e746f91fd33511783cccc92a6',
-        'bar2edge.gif' => '6d273a53798e532091bd6354f1e39c60',
-        'blank.gif' => '0e94b3486afb85d450b20ea1a6658cd7',
-        'bottom.png' => '46e798abeb638c4f9540973d239b10e7',
-        'bottomleft.png' => '3db4e800cc8add7f4f360c5f055aba49',
-        'bottomright.png' => '28a54110d855fd47380cf094d6b7b169',
-        'bullet1.gif' => 'f3e084e73fc80fea93ee8e11ffef4739',
-        'bullet2.gif' => '5fea13d481fc903ce05bfed57341e1c1',
-        'button.png' => '69918234a9caea763d1c66781e50fe34',
-        'cap1.png' => 'd014368f2839e01b455ef1d63175188d',
-        'capdark.png' => 'f8ec8fc5f9ccb1e72f0543e9405c0649',
-        'capleft.png' => 'b57f36c4daf41cee56d31cbd47f9b1f1',
-        'caplight.png' => 'ca308b892123bdb7e9e0f7cf1f729c59',
-        'capright.png' => '36e3ec810d778dc3664b456c714e62f3',
-        'captransition.png' => '7e9583f5c1c96b4191fa309a058aa314',
-        'fcap.png' => 'fabf58910351f1f742dee108b60517b8',
-        'fcap2.png' => '777e56bcaf32e29ad505df49f3cb6019',
-        'left.png' => 'a7755093080be75e9430072bd3bb32b3',
-        'right.png' => '1dc657e1d9065920653132f3a85d77ed',
-        'temp.png' => '35e34c98922cf2df737eef3cec806af2',
-        'top.png' => '75b4e22fcbe8059bf217690e08c265ac',
-        'topleft.png' => '8b45a5185fa619c3d336e1ceb618bc81',
-        'topright.png' => '1c6d6e49a6d9d173ec12f2baed2f45a8',
-      ),
-      'style.css' => '1b8a431a51e1e374e4eadcd8d7ed3ca6',
-      'theme.php' => 'ecde1a337a506f397465704e887a9865',
-    ),
-    'nagrunium' => 
-    array (
-      'images' => 
-      array (
-        'bar.jpg' => '13b2cb049602ff94d0d80a0e0896d8e9',
-        'bar2.gif' => '7a3ae76cbf5e376e3e86eb01aaadefba',
-        'bar2edge.gif' => '30f11ad7f707603148a90c4197c5b195',
-        'bg.gif' => '058052ed6c5234762c53f70b0001fb92',
-        'bullet1.gif' => 'f3e084e73fc80fea93ee8e11ffef4739',
-        'bullet2.gif' => '5e3525d341b9a47c514b094e9a5395a7',
-      ),
-      'style.css' => '289d72f0f610c28fa47e856ef1d16113',
-      'theme.php' => '9417c6b28e9c4f9b2754c26cdb200abb',
-    ),
-    'newsroom' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-    ),
-    'nordranious' => 
-    array (
-      'forum' => 
-      array (
-        'admin_delete.png' => '36fe015a4b8cfdbbe4b8aee8b7b563a7',
-        'admin_edit.png' => 'c03274b7f9e16ac1cb702ae8db849f7e',
-        'admin_lock.png' => 'e77b92a1f5877b64b9ccad7cf30b798d',
-        'admin_move.png' => '53724301fb9a5f735d47986feabaa5c2',
-        'admin_stick.png' => 'a3f08da8ab9eda3985365793ff91caf5',
-        'admin_unlock.png' => 'abbe887ff2c94e0fc7ccc6ec76e33e2f',
-        'admin_unstick.png' => '61807d0afc335e394bd9050157eae4c5',
-        'announce.png' => '51274830e593a079d57c3213da0b97ab',
-        'closed_small.png' => '23df1d00ed2742c32f08664b39ebe5e4',
-        'delete.png' => 'b9fc374f973e51f45c80884b56cab7c0',
-        'e.png' => '797612f8767a25e9a934580f7d778ef5',
-        'edit.png' => 'dc9067455b48da0bbc50993a4217eedd',
-        'email.png' => 'bd759f54b3496efb62529a08c2b15116',
-        'fcap.png' => 'b660b71d0208edb76a1b16930f2b81ac',
-        'fcap2.png' => '5f6f45697bc185d51f2c06d904642aad',
-        'finfobar.png' => '71585c0c2d3340ece8cf769a135286b9',
-        'moderator.png' => 'dc487b54b9dbbc1fc834a8ef882adea8',
-        'new.png' => '2bbd79241cf8036164e9965055b6f8b3',
-        'new_popular.gif' => '3c47023ff01dc15fb3a678cb21cf55ad',
-        'new_small.png' => 'c593a4a99887c7eaeb1cd8dd000ebfcd',
-        'newthread.png' => '94fdbfd082142c1443af2cf82914a833',
-        'nonew.png' => '5fe81217e3c6f672a4e2f2922ddbe1c6',
-        'nonew_popular.gif' => 'bd77c2f2b42336d5690646d4006ea983',
-        'nonew_small.png' => '1e88b9f0b2e714475d4243509336b5c4',
-        'post.png' => '5212304c8b38fb4033ddf691fd7b77ba',
-        'profile.png' => 'ed21e84603c3bcf82eb1820235c36075',
-        'quote.png' => '579d14bfb1faabf191272938fae3ab65',
-        'reply.png' => '556906857646412a52b35814b4f707ba',
-        'sticky.png' => 'c5bb0a20ef02bf8e52f3a93907804f20',
-        'stickyclosed.png' => '810fb2dee4cf3d593f5a50031a52cde8',
-        'website.png' => '568b5e9dcc6fcc5067209e9390297162',
-      ),
-      'images' => 
-      array (
-        'bar.jpg' => '683a63e29f5c473fe677836187953c1a',
-        'bar.png' => '9791d8cbd8e00c4b4538696990977d2b',
-        'bar2.gif' => '7a3ae76cbf5e376e3e86eb01aaadefba',
-        'bar2edge.gif' => 'd3ef60cb45ff91968ce65db5b49b985b',
-        'blank.gif' => '7de900b8e3dd46a432e384eb231f079d',
-        'bullet1.gif' => '09331909ba55a4f54c08018cede1ec85',
-        'bullet2.gif' => 'd6e34836e1e3270c3fe06557f9b93d9d',
-        'bullet3.gif' => '54e9d1f816051d002420875fb3499fd8',
-        'button.png' => '5a1a29b5670e03697659581da597b5fc',
-        'cap.png' => '81e98497b6b21b117be42ab30e6b8551',
-        'corner.png' => '55d255b0484a611b1e94e0c9f89fce34',
-        'left.png' => 'ddc536f7ec329942af71a88a8c8edaad',
-        'side.png' => '18dd6404dc3020641158c286b25b0ea9',
-        'top.png' => 'ca8d4b489c4c86f2cc8e1e0d48ef5eaf',
-      ),
-      'style.css' => '60e1cb2188f3fb4e88e21e138ff5aa07',
-      'theme.php' => 'f04beabe808e9269589d0a30889d8d6d',
-    ),
-    'phpbb' => 
-    array (
-      'forum' => 
-      array (
-        'admin_delete.png' => '36fe015a4b8cfdbbe4b8aee8b7b563a7',
-        'admin_edit.png' => 'c03274b7f9e16ac1cb702ae8db849f7e',
-        'admin_lock.png' => 'e77b92a1f5877b64b9ccad7cf30b798d',
-        'admin_move.png' => '53724301fb9a5f735d47986feabaa5c2',
-        'admin_stick.png' => 'a3f08da8ab9eda3985365793ff91caf5',
-        'admin_unlock.png' => 'abbe887ff2c94e0fc7ccc6ec76e33e2f',
-        'admin_unstick.png' => '61807d0afc335e394bd9050157eae4c5',
-        'announce.png' => '51274830e593a079d57c3213da0b97ab',
-        'closed_small.png' => '23df1d00ed2742c32f08664b39ebe5e4',
-        'delete.png' => 'b9fc374f973e51f45c80884b56cab7c0',
-        'e.png' => '797612f8767a25e9a934580f7d778ef5',
-        'edit.png' => 'dc9067455b48da0bbc50993a4217eedd',
-        'email.png' => 'bd759f54b3496efb62529a08c2b15116',
-        'fcap.png' => '3d1b365a597132548eb9635b6bca040d',
-        'fcap2.png' => '5f6f45697bc185d51f2c06d904642aad',
-        'finfobar.png' => '71585c0c2d3340ece8cf769a135286b9',
-        'moderator.png' => 'dc487b54b9dbbc1fc834a8ef882adea8',
-        'new.png' => '2bbd79241cf8036164e9965055b6f8b3',
-        'new_popular.gif' => '3c47023ff01dc15fb3a678cb21cf55ad',
-        'new_small.png' => 'c593a4a99887c7eaeb1cd8dd000ebfcd',
-        'newthread.png' => '94fdbfd082142c1443af2cf82914a833',
-        'nonew.png' => '5fe81217e3c6f672a4e2f2922ddbe1c6',
-        'nonew_popular.gif' => 'bd77c2f2b42336d5690646d4006ea983',
-        'nonew_small.png' => '1e88b9f0b2e714475d4243509336b5c4',
-        'post.png' => '5212304c8b38fb4033ddf691fd7b77ba',
-        'profile.png' => 'ed21e84603c3bcf82eb1820235c36075',
-        'quote.png' => '579d14bfb1faabf191272938fae3ab65',
-        'reply.png' => '556906857646412a52b35814b4f707ba',
-        'sticky.png' => 'c5bb0a20ef02bf8e52f3a93907804f20',
-        'stickyclosed.png' => '810fb2dee4cf3d593f5a50031a52cde8',
-        'website.png' => '568b5e9dcc6fcc5067209e9390297162',
-      ),
-      'images' => 
-      array (
-        'bar.jpg' => 'a6db2ab78d920a41f003a0c31e688199',
-        'bar2.gif' => '7a3ae76cbf5e376e3e86eb01aaadefba',
-        'bar2edge.gif' => '75b67e121016a521b1b975f3ead317a4',
-        'bullet1.gif' => '097e3c018ae655310889fa98f85be57b',
-        'bullet2.gif' => 'd6e34836e1e3270c3fe06557f9b93d9d',
-        'bullet3.gif' => 'e1bfc882a4a4a1f3b245585e17181da6',
-        'button.png' => '5a1a29b5670e03697659581da597b5fc',
-        'cap.png' => 'b439047ea62b69e3569cc70999ff6e5f',
-        'cap1.gif' => '9ad552a50c8425d6c1d8d766216c1093',
-        'header.png' => '200d62810e3f06bf792e920bcdce1d30',
-        'sb_template.png' => '05d718c4d7ffff4cb4a39e1fe3098a13',
-      ),
-      'style.css' => '5eaeee033e7af67e3642494321211461',
-      'theme.php' => '3bebdfb44352857292267e9e40baa744',
-    ),
-    'ranyart' => 
-    array (
-      'images' => 
-      array (
-        'bar.jpg' => 'a6db2ab78d920a41f003a0c31e688199',
-        'bar2.gif' => '7a3ae76cbf5e376e3e86eb01aaadefba',
-        'bar2edge.gif' => 'd3ef60cb45ff91968ce65db5b49b985b',
-        'bullet1.gif' => '097e3c018ae655310889fa98f85be57b',
-        'bullet2.gif' => 'ffa05a27f0da01830e12d15095b5473b',
-        'button.png' => '15462dc5844b42f6891e3a05dbfc0b3b',
-        'cap.png' => '736f4166b8ecd0c1a8f031e336657c5e',
-        'clock.png' => 'b8a6c6b2c3e1b66f3ae03b217665a1a2',
-        'header.png' => '200d62810e3f06bf792e920bcdce1d30',
-        'logo.png' => '830db48cdb37387b806423ed0ca9960d',
-        'monitor.png' => 'fe57c7050bc8c7903806149e7f4e25b4',
-      ),
-      'style.css' => '62365fd9c2b8b1b18485f69f1503818d',
-      'theme.php' => '0c1cdae9b4143f3ea1a0855231fe4b84',
-    ),
-    'reline' => 
-    array (
-      'images' => 
-      array (
-        'arrow.png' => '38b69b179e7cdf232aa367a0dc3c4cbd',
-        'bar.jpg' => '5afc27f5a70a68e53b1a51d74a40fbcc',
-        'blank.gif' => '0e94b3486afb85d450b20ea1a6658cd7',
-        'bullet2.gif' => 'b3baab02dac12534c559cb219422c2b3',
-        'button.png' => '6ea310ffec2a7d4cdc2e76e0fcae2445',
-        'buttonover.png' => 'c76d73539fef2b9d72506583908cfb36',
-        'comments_16.png' => 'ada4e49b53f9732e0020f8f917125e16',
-        'cube.png' => 'd3f6dd7ab8353b169403826534affb42',
-        'e_adminlogo.png' => 'ea8741ecbb591306740e29f420e324b9',
-        'e_logo.png' => 'c326c9fcad890ee3cf652b86b219d044',
-        'email_16.png' => '90866c1f54ed36c131038d2fc0851ac8',
-        'header.jpg' => '56fc3b2e5b74c3f3a111dbc462625c82',
-        'header.png' => '094cd7068dc557ce83b5205499ace920',
-        'loggedin.png' => '92edf005c8272484836b9f81e509b75a',
-        'logo.png' => 'c326c9fcad890ee3cf652b86b219d044',
-        'paperclip.png' => '7239a7df3faa4b0a77709b5f99dbbbf3',
-        'polls.png' => '2b352ea3b2c392dcc1c6551d1c1b3920',
-        'post_it_bottom.png' => '58bd6133cd5439ca03dabcf55a8d94f7',
-        'post_it_middle.png' => '2fabff36c04748927032e2d28bc3ccae',
-        'post_it_top.png' => 'c7caa215f5c456ab26cbf65d768d5568',
-        'postedby_16.png' => 'bbc0eb1411a21d970b3f3c9855e516af',
-        'print_16.png' => '574a45049daf40bb348ba6252a1e435c',
-        's_nav.png' => '0ef5452590a980bb30cd463c0c6f4a8f',
-        'search.png' => '5913e61a181f454a632998805524097d',
-      ),
-      'languages' => 
-      array (
-        'English.php' => '44b3f44a61e1f94358098988d01384e7',
-      ),
-      'admin_style.css' => '7850d3c2db60fb1e649a6eb6201cfc11',
-      'admin_template.php' => '7c20727a2f14d9042e9312ace4108844',
-      'cube.sc' => 'f85e6d1f10ab3372ec7ebdb0548651ad',
-      'full_width.css' => 'f806f549c1200131c4c043db72408da7',
-      'index.html' => 'd41d8cd98f00b204e9800998ecf8427e',
-      'preview.jpg' => '30da9e1ef04e5f1fef38ae3d23e0f3c4',
-      'style.css' => 'aa2df8aa8519c802f10e3eddfd95aed3',
-      'theme.php' => '7fc5b12bc42d5873cf0a0663a3a107b7',
-    ),
-    'sebes' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-    ),
-    'smacks' => 
-    array (
-      'images' => 
-      array (
-        'bg.gif' => '890e67e4d2d362079e3a794ff0c3950b',
-        'bg.png' => 'e70a48befe520f37d50872c6d7816ab6',
-        'body.png' => '555772b48dc8bebc0be424d4ef837e51',
-        'bottom.png' => 'f12ecaa6b26786524f6e9b0c1d0baa91',
-        'bottomleft.png' => '0df01a95deaeecdcfbd378500fb016d1',
-        'bottomright.png' => 'faf4235009b7bceda62f5e6e98f71a92',
-        'bullet1.gif' => '992bd9b4f72c80b5e74168af0adb225b',
-        'bullet2.gif' => 'ee9887f23030161576dc7267a163c59b',
-        'caption.png' => '98afcbf04a2dc04ecd6491c9a4beb3b9',
-        'left.png' => '3eef5624d4a069d3e31fb8576e785419',
-        'logo.png' => 'bb8d5e083cf27c045313e6e5bcd97e52',
-        'right.png' => 'd47a3a781045dc015f9cca05eb1b5ab8',
-        'tablebg.png' => 'c5c91fb04407c388ef0be982bb8809ae',
-        'top.png' => 'a48a0e033119a0289852812325b594ef',
-        'topbar.png' => '0dd080dfcd0a2df285fa26f5a3740147',
-        'topleft.png' => 'c872a73060a134dbdc57727348a6d907',
-        'topright.png' => '23ffd97e5448427efd333179d094387a',
-      ),
-      'style.css' => '44eb298d24e6eff161e327c06289e801',
-      'theme.php' => '8e83b87b38504a2d08292c0bbf7301c5',
-    ),
-    'soar' => 
-    array (
-      'images' => 
-      array (
-        'bar.jpg' => '13b2cb049602ff94d0d80a0e0896d8e9',
-        'bar2.gif' => '7a3ae76cbf5e376e3e86eb01aaadefba',
-        'bar2edge.gif' => '30f11ad7f707603148a90c4197c5b195',
-        'bg.gif' => '058052ed6c5234762c53f70b0001fb92',
-        'blank.gif' => '0e94b3486afb85d450b20ea1a6658cd7',
-        'bullet1.gif' => 'f3e084e73fc80fea93ee8e11ffef4739',
-        'bullet2.gif' => '5e3525d341b9a47c514b094e9a5395a7',
-        'cap1.png' => '98be8e32cc8651622d43a466f63b169c',
-        'caption.png' => '3d84f35bff62f78624822c7eae1bc5d2',
-        'caption2.png' => '2eac2c5145782f11f605842c3f5f6911',
-        'caption3.png' => '9804cedbccc111a22dc0b56c4aa5f1ae',
-        'fcap.png' => '808ecd89f8890df55e0f2a76555ef4d2',
-        'fcap2.png' => '90c520d65d4dd19217739cfcc6e3979a',
-        'hr.png' => 'e41d8ce6c3381c08bc20fad9ebf26aee',
-        'logo.jpg' => 'c79b084a3bb2e76ab49f9ddce0319ac1',
-        'nforumcaption.png' => '18a5f435d48bdeb8e036af0020f8ed26',
-        'nforumcaption2.png' => '9864c81acddb5f2d2e792738e1468f4e',
-        'shadow_left.png' => 'f47a342e00d6f4248b552fa5e39294d1',
-        'shadow_middle.png' => '946975a66e4db58fbe6442899afbeb13',
-        'shadow_right.png' => '00a7c72cc479dd89a50ccddeec650758',
-      ),
-      'forum_design.php' => '45e828a47cedaaa44e312470846d4930',
-      'style.css' => '62cb98d0e63beb9ca74cdfcd7c599785',
-      'theme.js' => 'bd6ab25405b19545bbdcad691da94fe8',
-      'theme.php' => '92fa9c0015733df0c6b935d0c2ce082c',
-    ),
-    'templates' => 
-    array (
-      'content_template.php' => '4234fe2ce5e65e85d0597efc6ee68d5d',
-      'forum_template.php' => '7c4aa61097a7cf0ea4a5f3d2089a5b9d',
-      'forum_viewforum_template.php' => '7a2c7fc3c28a3df76661ec297119daab',
-      'forum_viewtopic_template.php' => 'fb3516a937155a9e86eaa9a080905646',
-      'links_template.php' => '21d8747bb5c1d6d590a9ad0b0d26e576',
-    ),
-    'vekna_blue' => 
-    array (
-      'images' => 
-      array (
-      ),
-      'languages' => 
-      array (
-      ),
-    ),
-    'wan' => 
-    array (
-      'forum' => 
-      array (
-        'fcap.png' => '5c3f4de6a594f0cfc26ba5f262cff6a3',
-        'fcap2.png' => '5faf526e1c2b8b8473d73b5f1a034baa',
-      ),
-      'images' => 
-      array (
-        'bar.jpg' => '36494528dd74cb5869a176be426f48fd',
-        'bar2.gif' => '340f87a5da4dfff37fd833a7a9834a92',
-        'bar2edge.gif' => '3a224f579f9c6fa28687b44c61a03581',
-        'bullet1.gif' => 'c80146f4417e32ea9f21f9a1bd71dd19',
-        'bullet2.gif' => '62dfcf66db90d4a8d16093604582630d',
-        'cap.png' => 'e4767da365351414865449a5b59450a2',
-        'desktop.gif' => '24bdbaec3683f038c4c1e77983357aea',
-        'header.png' => '9123aa2265308104754a534b8540c8ba',
-        'iconmail.png' => 'e4ba543e3f4e02185e7df1ea5b689800',
-        'iconprint.png' => '933d2be01f102e99f7ed03bea96bfbe1',
-      ),
-      'style.css' => '1e999f8f80ebc89a4bde3c803f934bd3',
-      'theme.php' => 'bbe4d283f553c324863c4451e3212ea4',
-    ),
-    'xog' => 
-    array (
-      'images' => 
-      array (
-        'bar.jpg' => '13b2cb049602ff94d0d80a0e0896d8e9',
-        'bar2.gif' => '7a3ae76cbf5e376e3e86eb01aaadefba',
-        'bar2edge.gif' => '30f11ad7f707603148a90c4197c5b195',
-        'bg.gif' => '058052ed6c5234762c53f70b0001fb92',
-        'bullet1.gif' => 'f3e084e73fc80fea93ee8e11ffef4739',
-        'bullet2.gif' => '5e3525d341b9a47c514b094e9a5395a7',
-        'hr.png' => 'e41d8ce6c3381c08bc20fad9ebf26aee',
-        'logo.png' => '973175159c8710e70cbb136a9db781a6',
-      ),
-      'style.css' => '0de81736ec6019f246ee3df97133ba2b',
-      'theme.php' => 'f61421dacc4fb1456f289569b9a22b9c',
-    ),
-  ),
-  'CHANGES.txt' => '20499ea696da01da57ff542cb8cc90ce',
-  'Copy of class2.php' => '4bc75d69d5486bb439f681467ccb9256',
-  'Copy of forum_post.php' => '0063a6cdd546d5f90374bbb3ae342a2a',
-  'README.txt' => 'f27b32ddbf780a758df1b720a9adb8ac',
-  'ReadMe_English_iso-8859-1.txt' => 'a15c32416143ecdebb10fab747a9065a',
-  'backend.php' => '42ec5ced70b13df9882353ccd67f1aa7',
-  'chat.php' => 'f99ca9a68e350852ff12b6f201ff46e4',
-  'e107_6171_readme.txt' => '7f411eaafccc974f91447c8efd9992d4',
-  'forum_post.php' => 'b4537a7296252a0d8c010824b698259b',
-  'install.php' => '608c273d656960375693be1e5af7d446',
-  'oldpolls.php' => '2758e56550195c508819c6062b950bc3',
-  'sitemap.php' => 'd72fdc265a68f5a3b8a5d4b51d776f84',
-  'stats.php' => '70a4419f7b5ce5ad398a2f2d38ab55eb',
-  'upgrade.php' => '5e74e594b56732d62183c0300e222f2a',
-);
+$deprecated_image = NULL;
 
 ?>
\ No newline at end of file
diff -aruN 1.0.2.src/e107_admin/download.php 1.0.4.src/e107_admin/download.php
--- 1.0.2.src/e107_admin/download.php	2013-10-11 14:02:27.054000028 -0500
+++ 1.0.4.src/e107_admin/download.php	2013-09-26 16:49:50.000000000 -0500
@@ -10,14 +10,19 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_admin/download.php $
-|     $Revision: 12599 $
-|     $Id: download.php 12599 2012-02-27 14:31:16Z nlstart $
+|     $Revision: 13061 $
+|     $Id: download.php 13061 2012-12-30 12:19:23Z nlstart $
 |     $Author: nlstart $
 +----------------------------------------------------------------------------+
 */
-
 define('DOWNLOAD_DEBUG',FALSE);
 
+if(!empty($_POST) && !isset($_POST['e-token']))
+{
+	// set e-token so it can be processed by class2
+	$_POST['e-token'] = '';
+}
+
 require_once("../class2.php");
 if (!getperms("R"))
 {
@@ -53,7 +58,6 @@
 require_once("auth.php");
 $pst->save_preset('download_datestamp'); // save and render result using unique name. Don't save item datestamp
 
-
 $rs = new form;
 $action = '';
 $sub_action = '';
@@ -85,38 +89,33 @@
 		sort($file_array);
 }
 
-
 if($public_array = $fl->get_files(e_FILE."public/"))
 {
-  foreach($public_array as $key=>$val)
-  {
+	foreach($public_array as $key=>$val)
+	{
     	$file_array[] = str_replace(e_FILE."public/","",$val);
 	}
 }
 
-
-
 if ($sql->db_Select("rbinary"))
 {
-  while ($row = $sql->db_Fetch())
-  {
+	while ($row = $sql->db_Fetch())
+	{
 		extract($row);
 		$file_array[] = "Binary ".$binary_id."/".$binary_name;
 	}
 }
 
-
-
-if($image_array = $fl->get_files(e_FILE."downloadimages/", ".gif|.jpg|.png|.GIF|.JPG|.PNG","standard",2)){
+if($image_array = $fl->get_files(e_FILE."downloadimages/", ".gif|.jpg|.png|.GIF|.JPG|.PNG","standard",2))
+{
 	sort($image_array);
 }
 
-if($thumb_array = $fl->get_files(e_FILE."downloadthumbs/", ".gif|.jpg|.png|.GIF|.JPG|.PNG","standard",2)){
+if($thumb_array = $fl->get_files(e_FILE."downloadthumbs/", ".gif|.jpg|.png|.GIF|.JPG|.PNG","standard",2))
+{
 	sort($thumb_array);
 }
 
-
-
 if(isset($_POST))
 {
 	$e107cache->clear("download_cat");
@@ -134,20 +133,18 @@
 	unset($sub_action, $id);
 }
 
-
 if(isset($_POST['update_catorder']))
 {
-  foreach($_POST['catorder'] as $key=>$order)
-  {
-	if (is_numeric($_POST['catorder'][$key]))
+	foreach($_POST['catorder'] as $key=>$order)
 	{
-	  $sql -> db_Update("download_category", "download_category_order='".intval($order)."' WHERE download_category_id='".intval($key)."'");
+		if (is_numeric($_POST['catorder'][$key]))
+		{
+			$sql -> db_Update("download_category", "download_category_order='".intval($order)."' WHERE download_category_id='".intval($key)."'");
+		}
 	}
-  }
-  $ns->tablerender("", "<div style='text-align:center'><b>".LAN_UPDATED."</b></div>");
+	$ns->tablerender("", "<div style='text-align:center'><b>".LAN_UPDATED."</b></div>");
 }
 
-
 if (isset($_POST['updateoptions']))
 {
 	$pref['download_php'] = $_POST['download_php'];
@@ -168,7 +165,6 @@
 	$message = DOWLAN_65;
 }
 
-
 if(isset($_POST['addlimit']))
 {
 	if($sql->db_Select('generic','gen_id',"gen_type = 'download_limit' AND gen_datestamp = ".intval($_POST['newlimit_class'])))
@@ -188,10 +184,8 @@
 	}
 }
 
-
 if(isset($_POST['updatelimits']))
 {
-
 	if($pref['download_limits'] != $_POST['download_limits'])
 	{
 		$pref['download_limits'] = ($_POST['download_limits'] == 'on') ? 1 : 0;
@@ -221,19 +215,16 @@
 	}
 }
 
-
 if(isset($_POST['submit_mirror']))
 {
 	$download->submit_mirror($sub_action, $id);
 }
 
-
 if($action == "mirror")
 {
 	$download -> show_existing_mirrors();
 }
 
-
 if ($action == "dlm")
 {
 	$action = "create";
@@ -241,22 +232,19 @@
 	$sub_action = "dlm";
 }
 
-
 if ($action == "create")
 {
 	$download->create_download($sub_action, $id);
 }
 
-
 if ($delete == 'category')
 {
-  if (admin_update($sql->db_Delete("download_category", "download_category_id='$del_id' "), 'delete', DOWLAN_49." #".$del_id." ".DOWLAN_36))
-  {
+	if (admin_update($sql->db_Delete("download_category", "download_category_id='$del_id' "), 'delete', DOWLAN_49." #".$del_id." ".DOWLAN_36))
+	{
 		$sql->db_Delete("download_category", "download_category_parent='{$del_id}' ");
 	}
 }
 
-
 if ($action == "cat")
 {
 	$download->show_categories($sub_action, $id);
@@ -278,22 +266,16 @@
 	unset($sub_action, $id);
 }
 
-
 if (isset($message))
 {
 	$ns->tablerender("", "<div style='text-align:center'><b>".$message."</b></div>");
 }
 
-
-
 if (!e_QUERY || $action == "main")
 {
 	$download->show_existing_items($action, $sub_action, $id, $from, $amount);
 }
 
-
-
-
 if ($action == "opt")
 {
 	global $pref, $ns;
@@ -386,8 +368,6 @@
 		<td class='forumheader3' style='text-align:left'>". ($pref['download_splashdelay'] ? "<input type='checkbox' name='download_splashdelay' value='1' checked='checked' />" : "<input type='checkbox' name='download_splashdelay' value='1' />")."</td>
 		</tr>
 
-
-
 		<tr><td class='forumheader3'>
 		".DOWLAN_101."
 		</td>
@@ -406,6 +386,7 @@
 
 		<tr style='vertical-align:top'>
 		<td colspan='2'  style='text-align:center' class='forumheader'>
+		<input type='hidden' name='e-token' value='".e_TOKEN."' />
 		<input class='button' type='submit' name='updateoptions' value='".DOWLAN_64."' />
 		</td>
 		</tr>
@@ -416,8 +397,6 @@
 	$ns->tablerender(DOWLAN_54, $text);
 }
 
-
-
 if($action == 'limits')
 {
 	if($sql->db_Select('userclass_classes','userclass_id, userclass_name'))
@@ -498,6 +477,7 @@
 	</tr>
 	<tr>
 	<td class='forumheader' colspan='4' style='text-align:center'>
+	<input type='hidden' name='e-token' value='".e_TOKEN."' />
 	<input type='submit' class='button' name='addlimit' value='".DOWLAN_114."' />
 	</td>
 	</tr>
@@ -510,11 +490,86 @@
 	exit;
 }
 
-require_once("footer.php");
-exit;
+if($action == 'prune')
+{
+	$txt = DOWLAN_199."<br />";
+	$qry = "SELECT COUNT( DISTINCT download_request_id ) AS nmbr
+			, FROM_UNIXTIME(download_request_datestamp, \"%Y-%m\") AS yearmonth
+			FROM ".MPREFIX."download_requests
+			GROUP BY FROM_UNIXTIME(download_request_datestamp, \"%Y-%m\")
+			ORDER BY download_request_datestamp DESC";
+	$sql->db_Select_Gen($qry);
+	$txt .= "<table class='fborder' style='width:100%'>";
+	$txt .= "<tr>
+			<td class='fcaption'>".DOWLAN_200."</td>
+			<td class='fcaption'>".LAN_DATE."</td>
+			<td class='fcaption'>".LAN_OPTIONS."</td></tr>";
+	while($row = $sql->db_Fetch()) 
+	{
+		$txt .= "<tr><td class='forumheader3'>". $row['nmbr'] ."</td>
+		<td class='forumheader3'><a href='".e_SELF."?prune_details.".$row['yearmonth']."' alt='' >". $row['yearmonth'] . "</a></td>
+		<td class='forumheader3'>
+			<a href='".e_SELF."?del_month".$row['yearmonth']."' alt=''><img src='".ADMIN_DELETE_ICON_PATH."' alt='".LAN_DELETE."' /></a>
+		</td>
+		</tr>";
+	}
+	$txt .= "</table>";	
+	$ns->tablerender(DOWLAN_201, $txt);
+}
 
+if($action == 'del_month')
+{
+	if($sql -> db_Delete("download_requests", "FROM_UNIXTIME(download_request_datestamp, \"%Y-%m\")='".$tp->toDB($sub_action)."'"))
+	{
+		$txt = "<div style='text-align:center'>".LAN_DELETED."</div>";
+		$txt .= "<br /><div style='text-align:center;'><input class='button' type='submit' value=\"".LAN_BACK."\" onclick=\"parent.location='".e_SELF."?prune'\" /></div>";
+		$ns-> tablerender(DOWLAN_201, $txt);
+	}
+}
 
+if($action == 'prune_details')
+{
+	include_once(e_HANDLER."date_handler.php");
+	$gen = new convert();
+	
+	$sql3 = new db();
+	$qry3 = "SELECT dr . * , d . *
+			FROM ".MPREFIX."download_requests AS dr
+			JOIN ".MPREFIX."download AS d 
+			ON dr.download_request_download_id = d.download_id
+			WHERE FROM_UNIXTIME(download_request_datestamp, \"%Y-%m\") = '".$sub_action."'
+			ORDER BY dr.download_request_datestamp DESC";
+	$sql3->db_Select_Gen($qry3);
+	$txt = DOWLAN_199."<br />";
+	$txt .= "<table class='fborder' style='width:100%'>";
+	$txt .= "<tr><td class='fcaption'>".DOWLAN_163."</td><td class='fcaption'>".DOWLAN_164."</td><td class='fcaption'>".DOWLAN_27."</td><td class='fcaption'>".DOWLAN_165."</td><td class='fcaption'>".LAN_OPTIONS."</td></tr>";
+	while($row3 = $sql3->db_Fetch()) 
+	{
+		$user_name = '';
+		if ($user = get_user_data($row3['download_request_userid'])) 
+		{
+			$user_name = $user["user_name"];
+		}
+		$download_request_datestamp = $gen->convert_date($row3['download_request_datestamp'], "short");
+		$txt .= "<tr><td class='forumheader3'><a href='".SITEURL."user.php?id." .$row3['download_request_userid']. "' alt=''>". $user_name ."</a></td><td class='forumheader3'>". $row3['download_request_ip'] . "</td><td class='forumheader3'><a href='".SITEURL."download.php?view.".$row3['download_request_download_id']."' alt=''>". $row3['download_name'] . "</a></td><td class='forumheader3'>". $download_request_datestamp . "</td><td class='forumheader3'><a href='".e_SELF."?del_detail.".$sub_action.".".$row3['download_request_id']."' alt=''><img src='".ADMIN_DELETE_ICON_PATH."' alt='".LAN_DELETE."' /></a></td></tr>";
+	}
+	$txt .= "</table>";	
+	$txt .= "<br /><div style='text-align:center;'><input class='button' type='submit' value='".DOWLAN_204."' onClick=\"parent.location='".e_SELF."?prune'\"' /></div>";
+	$ns->tablerender(DOWLAN_202."&nbsp;".$sub_action , $txt);
+}
 
+if($action == 'del_detail')
+{
+	if($sql -> db_Delete("download_requests", "download_request_id='".intval($id)."'"))
+	{
+		$txt = "<div style='text-align:center'>".LAN_DELETED."</div>";
+		$txt .= "<br /><div style='text-align:center;'><input class='button' type='submit' value='".DOWLAN_207."' onClick=\"parent.location='".e_SELF."?prune_details.".$sub_action."'\" /></div>";
+		$ns-> tablerender(DOWLAN_202, $txt);
+	}
+}
+
+require_once("footer.php");
+exit;
 
 class download
 {
@@ -559,6 +614,7 @@
       	if ($dl_count = $sql->db_Select_gen($query))
 		{
 		  $text .= $rs->form_open("post", e_SELF."?".e_QUERY, "myform")."
+		  		<input type='hidden' name='e-token' value='".e_TOKEN."' />
 				<table class='fborder' style='width:99%'>
 				<tr>
 				<td style='width:5%' class='fcaption'>ID</td>
@@ -675,7 +731,7 @@
 
 
 		// Search  & display options etc.
-		$text .= "<br /><form method='post' action='".e_SELF."'>\n<p>\n<input class='tbox' type='text' name='searchquery' size='20' value='' maxlength='50' />\n<input class='button' type='submit' name='searchsubmit' value='".DOWLAN_51."' />\n</p>";
+		$text .= "<br /><form method='post' action='".e_SELF."'>\n<p>\n<input class='tbox' type='text' name='searchquery' size='20' value='' maxlength='50' />\n<input type='hidden' name='e-token' value='".e_TOKEN."' /><input class='button' type='submit' name='searchsubmit' value='".DOWLAN_51."' />\n</p>";
 
 		$text .= "<div style='cursor:pointer' onclick=\"expandit('sdisp')\">".LAN_DISPLAYOPT."</div>";
 		$text .= "<div id='sdisp' style='padding-top:4px;display:none;text-align:center;margin-left:auto;margin-right:auto'>
@@ -722,7 +778,6 @@
 		</form>\n
 		</div>";
 
-
 		$ns->tablerender(DOWLAN_7, $text);
 	}
 
@@ -749,12 +804,12 @@
 
 		$var['mirror']['text'] = DOWLAN_128;
 		$var['mirror']['link'] = e_SELF."?mirror";
+		
+		$var['prune']['text'] = DOWLAN_201;
+		$var['prune']['link'] = e_SELF."?prune";
 
 		show_admin_menu(DOWLAN_32, $action, $var);
-
 	}
-
-
 // ---------------------------------------------------------------------------
 
 
@@ -781,7 +836,6 @@
 		return $ret;
 	}
 
-
 	// Turn the array into a string which can be stored in the DB
 	function compressMirrorArray($source)
 	{
@@ -794,8 +848,6 @@
 		return implode(chr(1),$inter);
 	}
 
-
-
 	function create_download($sub_action, $id)
 	{
 		global $cal,$tp, $sql, $fl, $rs, $ns, $file_array, $image_array, $thumb_array,$pst;
@@ -846,7 +898,6 @@
 			}
 		}
 
-
 		$text = "
 			<div style='text-align:center'>
 			<form method='post' action='".e_SELF."?".e_QUERY."' id='myform'>
@@ -1102,8 +1153,6 @@
 		</td>
 		</tr>
 
-
-
 			<tr>
 			<td style='width:20%' class='forumheader3'>".DOWLAN_21.":</td>
 			<td style='width:80%' class='forumheader3'>
@@ -1119,16 +1168,16 @@
 		$text .= "</td>
 			</tr>
 
-
 			<tr>
 			<td style='width:20%' class='forumheader3'>".DOWLAN_102.":</td>
 			<td style='width:80%' class='forumheader3'>";
 
-
-		if ($download_comment == "0") {
+		if ($download_comment == "0") 
+		{
 			$text .= LAN_YES.": <input type='radio' name='download_comment' value='1' />
 				".LAN_NO.": <input type='radio' name='download_comment' value='0' checked='checked' />";
-		} else {
+		} else 
+		{
 			$text .= LAN_YES.": <input type='radio' name='download_comment' value='1' checked='checked' />
 				".LAN_NO.": <input type='radio' name='download_comment' value='0' />";
 		}
@@ -1136,14 +1185,12 @@
 		$text .= "</td>
 			</tr>";
 
-
 		$text .= "
 			<tr>
 			<td style='width:20%' class='forumheader3'>".DOWLAN_145.":</td>
 			<td style='width:80%' class='forumheader3'>".r_userclass('download_visible', $download_visible, 'off', 'public, nobody, member, admin, main, classes, language')."</td>
 			</tr>
 
-
 			<tr>
 			<td style='width:20%' class='forumheader3'>".DOWLAN_106.":</td>
 			<td style='width:80%' class='forumheader3'>".r_userclass('download_class', $download_class, 'off', 'public, nobody, member, admin, main, classes, language')."</td>
@@ -1152,7 +1199,6 @@
 
 		if ($sub_action == "dlm") {
 			$text .= "
-
 			<tr>
 				<td style='width:30%' class='forumheader3'>".DOWLAN_153.":<br /></td>
 				<td style='width:70%' class='forumheader3'>
@@ -1178,7 +1224,6 @@
 				</td>
 			</tr>
 
-
 			<tr>
 				<td style='width:30%' class='forumheader3'>".DOWLAN_103.":<br /></td>
 				<td style='width:70%' class='forumheader3'>
@@ -1191,8 +1236,7 @@
 
 		$text .= "
 			<tr style='vertical-align:top'>
-			<td colspan='2' style='text-align:center' class='forumheader'>";
-
+			<td colspan='2' style='text-align:center' class='forumheader'><input type='hidden' name='e-token' value='".e_TOKEN."' />";
 
 		if ($id && $sub_action == "edit") 
 		{
@@ -1210,17 +1254,14 @@
 			</div>";
 		$ns->tablerender(ADLAN_24, $text);
 	}
-
-
 // -----------------------------------------------------------------------------
 
-
-	function show_message($message) {
+	function show_message($message) 
+	{
 		global $ns;
 		$ns->tablerender("", "<div style='text-align:center'><b>".$message."</b></div>");
 	}
 
-
 // -----------------------------------------------------------------------------
 
 	function calc_filesize($size, $unit)
@@ -1230,31 +1271,24 @@
 			case 'B' :
 				return $size;
 				break;
-
 			case 'KB' :
 				return $size * 1024;
 				break;
-
 			case 'MB' :
 				return $size * 1024 * 1024;
 				break;
-
 			case 'GB' :
 				return $size * 1024 * 1024 * 1024;
 				break;
-
 			case 'TB' :
 				return $size * 1024 * 1024 * 1024 * 1024;
 				break;
 		}
-
 	}
 
-
 	function submit_download($sub_action, $id)
 	{
 		global $tp, $sql, $DOWNLOADS_DIRECTORY, $e_event;
-
 		if($sub_action == 'edit')
 		{
 			if($_POST['download_url_external'] == '')
@@ -1262,7 +1296,20 @@
 				$_POST['download_filesize_external'] = FALSE;
 			}
 		}
-
+		
+		$_POST['download_url_external'] = str_replace("'", '', $_POST['download_url_external']);
+		$_POST['download_url'] = str_replace("'", '', $_POST['download_url']);
+		$_POST['download_author_website'] = str_replace("'", '', $_POST['download_author_website']);
+		$_POST['download_image'] = str_replace("'", '', $_POST['download_image']);
+		$_POST['download_thumb'] = str_replace("'", '', $_POST['download_thumb']);
+		$_POST['download_visible'] = $_POST['download_visible'] ? intval($_POST['download_visible']) : '';
+		$_POST['download_class'] = $_POST['download_class'] ? intval($_POST['download_class']) : '';
+		
+		if($_POST['download_author_email'] && !check_email($_POST['download_author_email']))
+		{
+			$_POST['download_author_email'] = '';
+		}
+		
 		if ($_POST['download_url_external'] && $_POST['download_url'] == '')
 		{
 			$durl = $_POST['download_url_external'];
@@ -1287,7 +1334,6 @@
 				}
 			}
 		}
-
 		if (!$filesize)
 		{
 			if($sql->db_Select("upload", "upload_filesize", "upload_file='$durl'"))
@@ -1298,7 +1344,6 @@
 		}
 
 		//  ----   Move Images and Files ------------
-
 		if($_POST['move_image'])
 		{
 			if($_POST['download_thumb'])
@@ -1331,18 +1376,18 @@
 			}
             $durl = str_replace(e_DOWNLOAD,"",$newname);
 		}
-
-
-       // ------------------------------------------
-
+        // ------------------------------------------
 
 		$_POST['download_description'] = $tp->toDB($_POST['download_description']);
 		$_POST['download_name'] = $tp->toDB($_POST['download_name']);
 		$_POST['download_author'] = $tp->toDB($_POST['download_author']);
 
-		if (preg_match("#(.*?)/(.*?)/(.*?) (.*?):(.*?):(.*?)$#", $_POST['download_datestamp'], $matches)){
+		if (preg_match("#(.*?)/(.*?)/(.*?) (.*?):(.*?):(.*?)$#", $_POST['download_datestamp'], $matches))
+		{
 			$_POST['download_datestamp'] = mktime($matches[4], $matches[5], $matches[6], $matches[2], $matches[1], $matches[3]);
-		}else{
+		}
+		else
+		{
            $_POST['download_datestamp'] = time();
 		}
 
@@ -1402,13 +1447,13 @@
 
 		if ($id)
 		{	// Its an edit
-			admin_update($sql->db_Update("download", "download_name='".$_POST['download_name']."', download_url='".$durl."', download_author='".$_POST['download_author']."', download_author_email='".$_POST['download_author_email']."', download_author_website='".$_POST['download_author_website']."', download_description='".$_POST['download_description']."', download_filesize='".$filesize."', download_category='".intval($_POST['download_category'])."', download_active='".intval($_POST['download_active'])."', download_datestamp='".intval($_POST['download_datestamp'])."', download_thumb='".$_POST['download_thumb']."', download_image='".$_POST['download_image']."', download_comment='".intval($_POST['download_comment'])."', download_class = '{$_POST['download_class']}', download_mirror='$mirrorStr', download_mirror_type='".intval($_POST['download_mirror_type'])."' , download_visible='".$_POST['download_visible']."' WHERE download_id=".intval($id)), 'update', DOWLAN_2." (<a href='".e_BASE."download.php?view.".$id."'>".$_POST['download_name']."</a>)");
+			admin_update($sql->db_Update("download", "download_name='".$_POST['download_name']."', download_url='".$durl."', download_author='".$_POST['download_author']."', download_author_email='".$_POST['download_author_email']."', download_author_website='".$_POST['download_author_website']."', download_description='".$_POST['download_description']."', download_filesize='".$filesize."', download_category='".intval($_POST['download_category'])."', download_active='".intval($_POST['download_active'])."', download_datestamp='".intval($_POST['download_datestamp'])."', download_thumb='".$_POST['download_thumb']."', download_image='".$_POST['download_image']."', download_comment='".intval($_POST['download_comment'])."', download_class = '".intval($_POST['download_class'])."', download_mirror='{$mirrorStr}', download_mirror_type='".intval($_POST['download_mirror_type'])."' , download_visible='".$_POST['download_visible']."' WHERE download_id=".intval($id)), 'update', DOWLAN_2." (<a href='".e_BASE."download.php?view.".$id."'>".$_POST['download_name']."</a>)");
             $dlinfo = array("download_id" => $download_id, "download_name" => $_POST['download_name'], "download_url" => $durl, "download_author" => $_POST['download_author'], "download_author_email" => $_POST['download_author_email'], "download_author_website" => $_POST['download_author_website'], "download_description" => $_POST['download_description'], "download_filesize" => $filesize, "download_category" => $_POST['download_category'], "download_active" => $_POST['download_active'], "download_datestamp" => $time, "download_thumb" => $_POST['download_thumb'], "download_image" => $_POST['download_image'], "download_comment" => $_POST['download_comment'] );
 			$e_event->trigger("dlupdate", $dlinfo);
 		}
 		else
 		{
-			if (admin_update($download_id = $sql->db_Insert("download", "0, '".$_POST['download_name']."', '".$durl."', '".$_POST['download_author']."', '".$_POST['download_author_email']."', '".$_POST['download_author_website']."', '".$_POST['download_description']."', '".$filesize."', '0', '".intval($_POST['download_category'])."', '".intval($_POST['download_active'])."', '".intval($_POST['download_datestamp'])."', '".$_POST['download_thumb']."', '".$_POST['download_image']."', '".intval($_POST['download_comment'])."', '{$_POST['download_class']}', '$mirrorStr', '".intval($_POST['download_mirror_type'])."', '".$_POST['download_visible']."' "), 'insert', DOWLAN_1." (<a href='".e_BASE."download.php?view.".$download_id."'>".$_POST['download_name']."</a>)"))
+			if (admin_update($download_id = $sql->db_Insert("download", "0, '".$_POST['download_name']."', '".$durl."', '".$_POST['download_author']."', '".$_POST['download_author_email']."', '".$_POST['download_author_website']."', '".$_POST['download_description']."', '".$filesize."', '0', '".intval($_POST['download_category'])."', '".intval($_POST['download_active'])."', '".intval($_POST['download_datestamp'])."', '".$_POST['download_thumb']."', '".$_POST['download_image']."', '".intval($_POST['download_comment'])."', '".intval($_POST['download_class'])."', '{$mirrorStr}', '".intval($_POST['download_mirror_type'])."', '".$_POST['download_visible']."' "), 'insert', DOWLAN_1." (<a href='".e_BASE."download.php?view.".$download_id."'>".$_POST['download_name']."</a>)"))
 			{
 				$dlinfo = array("download_id" => $download_id, "download_name" => $_POST['download_name'], "download_url" => $durl, "download_author" => $_POST['download_author'], "download_author_email" => $_POST['download_author_email'], "download_author_website" => $_POST['download_author_website'], "download_description" => $_POST['download_description'], "download_filesize" => $filesize, "download_category" => $_POST['download_category'], "download_active" => $_POST['download_active'], "download_datestamp" => $time, "download_thumb" => $_POST['download_thumb'], "download_image" => $_POST['download_image'], "download_comment" => $_POST['download_comment'] );
 				$e_event->trigger("dlpost", $dlinfo);
@@ -1423,15 +1468,12 @@
 			}
 		}
 	}
-
-
-// -----------------------------------------------------------------------------
-
+	// -----------------------------------------------------------------------------
 	function show_categories($sub_action, $id)
 	{
 		global $sql, $rs, $ns, $tp, $pst;
-
-		if (!is_object($sql2)) {
+		if (!is_object($sql2)) 
+		{
 			$sql2 = new db;
 		}
 		$text = $rs->form_open("post", e_SELF."?".e_QUERY, "myform");
@@ -1461,7 +1503,6 @@
 				<td style='width:20%; text-align:center' class='fcaption'>".LAN_OPTIONS."</td>
 				</tr>";
 
-
 			//Start displaying parent categories
 			foreach($cat_array[0] as $parent)
 			{
@@ -1489,12 +1530,10 @@
 					";
 
 				//Show main categories
-
 				if(is_array($cat_array[$parent['download_category_id']]))
 				{
 					foreach($cat_array[$parent['download_category_id']] as $main)
 					{
-
 						if(strstr($main['download_category_icon'], chr(1)))
 						{
 							list($main['download_category_icon'], $main['download_category_icon_empty']) = explode(chr(1), $main['download_category_icon']);
@@ -1547,11 +1586,11 @@
 						}
 					}
 				}
-
 			}
 
 			$text .= "</table></div>";
 			$text .= "<div style='text-align:center'>
+				<input type='hidden' name='e-token' value='".e_TOKEN."' />
 				<input class='button' type='submit' name='update_catorder' value='".LAN_UPDATE."' />
 				</div>";
 		}
@@ -1565,15 +1604,19 @@
 		unset($download_category_id, $download_category_name, $download_category_description, $download_category_parent, $download_category_icon, $download_category_class);
 
 		$handle = opendir(e_IMAGE."icons");
-		while ($file = readdir($handle)) {
-			if ($file != "." && $file != ".." && $file != "/" && $file != "CVS") {
+		while ($file = readdir($handle)) 
+		{
+			if ($file != "." && $file != ".." && $file != "/" && $file != "CVS") 
+			{
 				$iconlist[] = $file;
 			}
 		}
 		closedir($handle);
 
-		if ($sub_action == "edit" && !$_POST['add_category']) {
-			if ($sql->db_Select("download_category", "*", "download_category_id=$id")) {
+		if ($sub_action == "edit" && !$_POST['add_category']) 
+		{
+			if ($sql->db_Select("download_category", "*", "download_category_id=$id")) 
+			{
 				$row = $sql->db_Fetch();
 				 extract($row);
 				$main_category_parent = $download_category_parent;
@@ -1599,21 +1642,26 @@
 			<td style='width:30%' class='forumheader3'>".DOWLAN_37.": </td>
 			<td style='width:70%' class='forumheader3'>";
 
-		if (!$download_cats = $sql->db_Select("download_category")) {
+		if (!$download_cats = $sql->db_Select("download_category")) 
+		{
 			$text .= "
 				<select name='download_category_parent' class='tbox'>
 				<option>".DOWLAN_40."</option>
 				</select>\n";
-		} else {
+		}
+		else 
+		{
             $text .= "
 				<select name='download_category_parent' class='tbox'>
 				<option>".DOWLAN_40."</option>";
 
-			while (list($cat_id, $cat_name, $null, $null, $cat_parent) = $sql->db_Fetch()) {
+			while (list($cat_id, $cat_name, $null, $null, $cat_parent) = $sql->db_Fetch()) 
+			{
 				$sql2->db_Select("download_category", "download_category_parent", "download_category_id='$cat_parent'", TRUE);
 				$row = $sql2->db_Fetch();
-				 extract($row);
-				if (!$download_category_parent || !$cat_parent) {
+				extract($row);
+				if (!$download_category_parent || !$cat_parent) 
+				{
 					$text .= ($main_category_parent == $cat_id ? "<option value='$cat_id' selected='selected'>".$cat_name."</option>" : "<option value='$cat_id'>".$cat_name."</option>");
 				}
 			}
@@ -1642,7 +1690,8 @@
 			<input class='button' type ='button' style='cursor:pointer' size='30' value='".DOWLAN_42."' onclick='expandit(this)' />
 			<div id='cat_icn' style='display:none;{head}' >";
 
-		while (list($key, $icon) = each($iconlist)) {
+		while (list($key, $icon) = each($iconlist)) 
+		{
 			$text .= "<a href=\"javascript:insertext('$icon','download_category_icon','cat_icn')\"><img src='".e_IMAGE."icons/".$icon."' style='border:0' alt='' /></a> ";
 		}
 
@@ -1661,7 +1710,8 @@
 			<input class='button' type ='button' style='cursor:pointer' size='30' value='".DOWLAN_42."' onclick='expandit(this)' />
 			<div id='cat_icn_empty' style='display:none;{head}' >";
 
-		while (list($key, $icon) = each($iconlist)) {
+		while (list($key, $icon) = each($iconlist)) 
+		{
 			$text .= "<a href=\"javascript:insertext('$icon','download_category_icon_empty','cat_icn_empty')\"><img src='".e_IMAGE."icons/".$icon."' style='border:0' alt='' /></a> ";
 		}
 
@@ -1669,21 +1719,21 @@
 			</div></td>
 			</tr>
 
-
-
 			<tr>
 			<td style='width:30%' class='forumheader3'>".DOWLAN_43.":<br /><span class='smalltext'>(".DOWLAN_44.")</span></td>
 			<td style='width:70%' class='forumheader3'>".r_userclass("download_category_class", $download_category_class, 'off', 'public, nobody, member, admin, main, classes, language')."
 
 			</td></tr>";
 
-
 		$text .= "
 			<tr style='vertical-align:top'>
-			<td colspan='2' style='text-align:center' class='forumheader'>";
-		if ($id && $sub_action == "edit" && !isset($_POST['add_category'])) {
+			<td colspan='2' style='text-align:center' class='forumheader'><input type='hidden' name='e-token' value='".e_TOKEN."' />";
+		if ($id && $sub_action == "edit" && !isset($_POST['add_category'])) 
+		{
 			$text .= "<input class='button' type='submit' name='add_category' value='".DOWLAN_46."' /> ";
-		} else {
+		}
+		else 
+		{
 			$text .= "<input class='button' type='submit' name='add_category' value='".DOWLAN_45."' />";
 		}
 		$text .= "</td>
@@ -1694,7 +1744,8 @@
 		$ns->tablerender(DOWLAN_39, $text);
 	}
 
-	function create_category($sub_action, $id) {
+	function create_category($sub_action, $id) 
+	{
 		global $sql, $tp;
 		$download_category_name = $tp->toDB($_POST['download_category_name']);
 		$download_category_description = $tp->toDB($_POST['download_category_description']);
@@ -1720,19 +1771,14 @@
 		}
 	}
 
-
-
 	function show_existing_mirrors()
 	{
-
 		global $sql, $ns, $tp, $sub_action, $id, $delete, $del_id;
-
 		if($delete == "mirror")
 		{
 			admin_update($sql -> db_Delete("download_mirror", "mirror_id=".$del_id), delete, DOWLAN_135);
 		}
 
-
 		if(!$sql -> db_Select("download_mirror"))
 		{
 			$text = "<div style='text-align:center;'>".DOWLAN_144."</div>"; // No mirrors defined yet
@@ -1742,6 +1788,7 @@
 
 			$text = "<div style='text-align:center'>
 			<form method='post' action='".e_SELF."?".e_QUERY."'>
+			<input type='hidden' name='e-token' value='".e_TOKEN."' />
 			<table style='".ADMIN_WIDTH."' class='fborder'>
 			<tr>
 			<td style='width: 10%; text-align: center;' class='forumheader'>ID</td>
@@ -1770,7 +1817,6 @@
 				";
 			}
 			$text .= "</table></form></div>";
-
 		}
 
 		$ns -> tablerender(DOWLAN_138, $text);
@@ -1795,6 +1841,7 @@
 
 		$text = "<div style='text-align:center'>
 		<form method='post' action='".e_SELF."?".e_QUERY."' id='dataform'>\n
+		<input type='hidden' name='e-token' value='".e_TOKEN."' />
 		<table style='".ADMIN_WIDTH."' class='fborder'>
 
 		<tr>
@@ -1871,15 +1918,17 @@
 
 			$description = $tp -> toDB($_POST['mirror_description']);
 
-			if (isset($_POST['id'])){
+			if (isset($_POST['id']))
+			{
 				admin_update($sql -> db_Update("download_mirror", "mirror_name='$name', mirror_url='$url', mirror_image='".$_POST['mirror_image']."', mirror_location='$location', mirror_description='$description' WHERE mirror_id=".$_POST['id']), 'update', DOWLAN_133);
-			} else {
+			}
+			else 
+			{
 				admin_update($sql -> db_Insert("download_mirror", "0, '$name', '$url', '".$_POST['mirror_image']."', '$location', '$description', 0"), 'insert', DOWLAN_134);
 			}
 		}
 	}
-
- // ---------------------------------------------------------------------------
+	// ---------------------------------------------------------------------------
 
     function move_file($oldname,$newname)
 	{
@@ -1915,7 +1964,6 @@
 		}
 	}
 
-	
 	function show_requests($id)
 	{
 		global $sql,$ns;
@@ -1962,21 +2010,13 @@
 		$ns -> tablerender(DOWLAN_162." '".$download_name."'", $text);
 		return TRUE;
 	}
-	
-// -------------------------------------------------------------------------
-
-
+	// -------------------------------------------------------------------------
 } // end class.
 
-
-function download_adminmenu($parms) {
+function download_adminmenu($parms) 
+{
 	global $download;
 	list($action) = explode('.',e_QUERY);
 	$download->show_options($action);
 }
-
-
-
-
-
-?>
+?>
\ No newline at end of file
diff -aruN 1.0.2.src/e107_admin/e107_update.php 1.0.4.src/e107_admin/e107_update.php
--- 1.0.2.src/e107_admin/e107_update.php	2013-10-11 14:02:27.054000028 -0500
+++ 1.0.4.src/e107_admin/e107_update.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,8 +11,8 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_admin/e107_update.php $
-|     $Revision: 11678 $
-|     $Id: e107_update.php 11678 2010-08-22 00:43:45Z e107coders $
+|     $Revision: 13049 $
+|     $Id: e107_update.php 13049 2012-11-13 09:17:27Z e107coders $
 |     $Author: e107coders $
 +----------------------------------------------------------------------------+
 */
@@ -21,8 +21,9 @@
 require_once("auth.php");
 require_once("update_routines.php");
 
-function run_updates($dbupdate) {
-	global $ns;
+function run_updates($dbupdate) 
+{
+	global $ns,$e107cache;
 	foreach($dbupdate as $func => $rmks) {
 		$installed = call_user_func("update_".$func);
 		if ((LAN_UPDATE == $_POST[$func]) && !$installed) {
@@ -35,13 +36,16 @@
 			}
 		}
 	}
-	if ($message) {
-		$ns->tablerender(LAN_UPDATE, $message);
+	if ($message)
+	{
+		$ns->tablerender(LAN_UPDATE, $message);	
+		$e107cache->delete(e_FILE."cache","nq_admin_update*");	
 	}
 }
 
 function show_updates($dbupdate, $additional = false) {
 	global $ns;
+	/*
 	$text = "<form method='POST' action='".e_SELF."'>
 	<div style='width:100%'>
 	<table class='fborder' style='".ADMIN_WIDTH."'>
@@ -50,7 +54,8 @@
 	<td class='fcaption'>".LAN_UPDATE_2."</td>
 	</tr>
 	";
-
+	*/
+	
 	$updates = 0;
 
 	foreach($dbupdate as $func => $rmks) {
@@ -66,8 +71,11 @@
 		}
 	}
 
-	$text .= "</table></div></form>";
-	$ns->tablerender(($additional ? (defined("LAN_UPDATE_11") ? LAN_UPDATE_11 : '.617 to .7 Update Continued') : LAN_UPDATE_10), $text);
+
+	return $text;
+
+	// $text .= "</table></div></form>";
+	// $ns->tablerender(($additional ? (defined("LAN_UPDATE_11") ? LAN_UPDATE_11 : '.617 to .7 Update Continued') : LAN_UPDATE_10), $text);
 }
 
 if ($_POST) 
@@ -111,11 +119,28 @@
 	$message = run_updates($dbupdatep);
 }
 
-if (isset($dbupdatep)) {
-	show_updates($dbupdatep, true);
+
+
+$text = "<form method='POST' action='".e_SELF."'>
+	<div style='width:100%'>
+	<table class='fborder' style='".ADMIN_WIDTH."'>
+	<tr>
+	<td class='fcaption'>".LAN_UPDATE."</td>
+	<td class='fcaption'>".LAN_UPDATE_2."</td>
+	</tr>
+	";
+
+
+$text .= show_updates($dbupdate);
+
+if (isset($dbupdatep)) 
+{
+	$text .= show_updates($dbupdatep);
 }
-show_updates($dbupdate);
 
+	$text .= "</table></div></form>";
+	$ns->tablerender(($additional ? (defined("LAN_UPDATE_11") ? LAN_UPDATE_11 : '.617 to .7 Update Continued') : LAN_UPDATE_10), $text);
+	
 require_once("footer.php");
 
 ?>
\ No newline at end of file
diff -aruN 1.0.2.src/e107_admin/frontpage.php 1.0.4.src/e107_admin/frontpage.php
--- 1.0.2.src/e107_admin/frontpage.php	2013-10-11 14:02:27.056000028 -0500
+++ 1.0.4.src/e107_admin/frontpage.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,9 +11,9 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_admin/frontpage.php $
-|     $Revision: 11678 $
-|     $Id: frontpage.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13002 $
+|     $Id: frontpage.php 13002 2012-10-22 21:45:59Z e107moc $
+|     $Author: e107moc $
 +----------------------------------------------------------------------------+
 */
 
@@ -33,7 +33,7 @@
 $front_page['wmessage'] = array('page' => 'index.php', 'title' => ADLAN_28);
 
 if ($sql -> db_Select("page", "*", "page_theme=''")) {
-	$front_page['custom']['title'] = 'Custom Page';
+	$front_page['custom']['title'] = FRTLAN_22;
 	while ($row = $sql -> db_Fetch()) {
 		$front_page['custom']['page'][] = array('page' => 'page.php?'.$row['page_id'], 'title' => $row['page_title']);
 	}
diff -aruN 1.0.2.src/e107_admin/lancheck.php 1.0.4.src/e107_admin/lancheck.php
--- 1.0.2.src/e107_admin/lancheck.php	2013-10-11 14:02:27.059000028 -0500
+++ 1.0.4.src/e107_admin/lancheck.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,8 +11,8 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_admin/lancheck.php $
-|     $Revision: 12903 $
-|     $Id: lancheck.php 12903 2012-07-23 07:37:12Z e107coders $
+|     $Revision: 13068 $
+|     $Id: lancheck.php 13068 2013-01-23 04:52:35Z e107coders $
 |     $Author: e107coders $
 |	  With code from Izydor and Lolo.
 +----------------------------------------------------------------------------+
@@ -450,6 +450,7 @@
 				else
 				{
 					$this->checkLog('file',1);
+					$this->newFile(e_LANGUAGEDIR.$checklan."/".$subdir.$lnk,$checklan);
 					$text .= "<tr>
 					<td class='forumheader3' style='width:45%'>{$lnk}</td>
 					<td class='forumheader' style='width:50%'>".LAN_CHECK_4."</td>"; // file missing.
@@ -574,6 +575,10 @@
 				$ret['bom'][$key] = $fname;
 			}
 		}
+		elseif(substr($fname,-4) == ".php") 
+		{
+			file_put_contents($fname,"<?php\n\n?>");
+		}
 		
 	
 		return $ret;
@@ -598,6 +603,7 @@
 			sort($lang_array);
 		}
 	
+
 		$regexp = (strpos($comp_dir,e_LANGUAGEDIR) !== FALSE) ? "#.php#" : "#".$lang."#";
 	
 		foreach($lang_array as $f)
@@ -738,6 +744,8 @@
 			else
 			{
 				$this->checkLog('file',1);
+				$this->newFile($comp_dir."/languages/".$lnk,$target_lan);
+				
 				$text .= "<tr>
 				<td class='forumheader3' style='width:20%'>".$comp_name."</td>
 				<td class='forumheader3' style='width:25%'>".str_replace("English/","",$lnk)."</td>
@@ -755,6 +763,29 @@
 		return $text;
 	}
 	
+	function newFile($lnk,$target_lan)
+	{
+		if($target_lan == 'English') 
+		{
+			return;	
+		}
+				
+		$newfile = str_replace("English",$target_lan,$lnk);
+		$dir = dirname($newfile);
+				
+		if($dir != '.' && !is_dir($dir))
+		{
+		//	echo "<br />dir: ".$dir;
+			mkdir($dir,0755);	
+		} 
+		
+		if(!file_exists($newfile))
+		{
+		//	echo "<br />file: ".$newfile;
+			$data = chr(60)."?php\n\ndefine(\"EXAMPLE\",\"Generated Empty Language File\");";
+			file_put_contents($newfile,$data);	
+		}
+	}
 	
 	
 	function edit_lanfiles($dir1,$dir2,$f1,$f2,$lan)
diff -aruN 1.0.2.src/e107_admin/language.php 1.0.4.src/e107_admin/language.php
--- 1.0.2.src/e107_admin/language.php	2013-10-11 14:02:27.060000028 -0500
+++ 1.0.4.src/e107_admin/language.php	2013-09-26 16:49:50.000000000 -0500
@@ -10,8 +10,8 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_admin/language.php $
-|     $Revision: 12903 $
-|     $Id: language.php 12903 2012-07-23 07:37:12Z e107coders $
+|     $Revision: 13102 $
+|     $Id: language.php 13102 2013-04-25 23:10:19Z e107coders $
 |     $Author: e107coders $
 +----------------------------------------------------------------------------+
 */
@@ -180,7 +180,7 @@
 {
 	global $pref;
 	
-	if(!$newfile)
+	if(!$newfile || E107_DEBUG_LEVEL > 0)
 	{
 		return;
 	}
@@ -698,7 +698,7 @@
 	$ret = array();
 	$ret['file'] = "";
 	
-	if($_SESSION['lancheck'][$language]['total'] > 0)
+	if($_SESSION['lancheck'][$language]['total'] > 0 && !E107_DEBUG_LEVEL)
 	{
 		$ret = array();
 		$ret['error'] = TRUE;
diff -aruN 1.0.2.src/e107_admin/modcomment.php 1.0.4.src/e107_admin/modcomment.php
--- 1.0.2.src/e107_admin/modcomment.php	2013-10-11 14:02:27.062000028 -0500
+++ 1.0.4.src/e107_admin/modcomment.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,9 +11,9 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_admin/modcomment.php $
-|     $Revision: 12910 $
-|     $Id: modcomment.php 12910 2012-07-24 09:34:58Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13029 $
+|     $Id: modcomment.php 13029 2012-11-01 09:15:37Z nlstart $
+|     $Author: nlstart $
 +----------------------------------------------------------------------------+
 */
 
@@ -124,6 +124,7 @@
 		$text .= "<tr><td><textarea class='tbox' name='comment_comment' cols='1' rows='15' style='width:100%;'>".$row['comment_comment']."</textarea></td></tr>";
 		$text .= "<tr><td colspan='6' class='forumheader' style='text-align:center'><input class='button' type='submit' name='moderate' value='".MDCLAN_8."' />
 		</td></tr>";
+		$text .= "<div><input type='hidden' name='e-token' value='".e_TOKEN."' /></div>";
 	}
 
 	$text .= "</table></form></div>";
diff -aruN 1.0.2.src/e107_admin/prefs.php 1.0.4.src/e107_admin/prefs.php
--- 1.0.2.src/e107_admin/prefs.php	2013-10-11 14:02:27.064000028 -0500
+++ 1.0.4.src/e107_admin/prefs.php	2013-09-26 16:49:50.000000000 -0500
@@ -10,9 +10,9 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_admin/prefs.php $
-|     $Revision: 12892 $
-|     $Id: prefs.php 12892 2012-07-21 03:20:42Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13088 $
+|     $Id: prefs.php 13088 2013-03-26 18:07:00Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 
@@ -90,7 +90,7 @@
 	  }
 	  else
 	  {
-	    $pref[$key] = $tp->toDB($value);
+	    $pref[$key] = $tp->toDB($value, false, false, 'pReFs');
 	  }
 	}
 
diff -aruN 1.0.2.src/e107_admin/sql/core_sql.php 1.0.4.src/e107_admin/sql/core_sql.php
--- 1.0.2.src/e107_admin/sql/core_sql.php	2013-10-11 14:02:27.066000028 -0500
+++ 1.0.4.src/e107_admin/sql/core_sql.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,9 +11,9 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_admin/sql/core_sql.php $
-|     $Revision: 12063 $
-|     $Id: core_sql.php 12063 2011-02-07 22:25:44Z e107steved $
-|     $Author: e107steved $
+|     $Revision: 13081 $
+|     $Id: core_sql.php 13081 2013-03-10 00:07:40Z e107coders $
+|     $Author: e107coders $
 +----------------------------------------------------------------------------+
 */
 header("location:../index.php");
@@ -277,7 +277,11 @@
   news_summary text NOT NULL,
   news_thumbnail text NOT NULL,
   news_sticky tinyint(3) unsigned NOT NULL default '0',
-  PRIMARY KEY  (news_id)
+  PRIMARY KEY  (news_id),
+  KEY news_sticky (news_sticky),
+  KEY news_datestamp (news_datestamp),  
+  KEY news_start (news_start)    
+  
 ) ENGINE=MyISAM;
 
 
diff -aruN 1.0.2.src/e107_admin/update_routines.php 1.0.4.src/e107_admin/update_routines.php
--- 1.0.2.src/e107_admin/update_routines.php	2013-10-11 14:02:27.068000028 -0500
+++ 1.0.4.src/e107_admin/update_routines.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,8 +11,8 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_admin/update_routines.php $
-|     $Revision: 12714 $
-|     $Id: update_routines.php 12714 2012-05-12 01:52:52Z e107coders $
+|     $Revision: 13105 $
+|     $Id: update_routines.php 13105 2013-05-02 09:58:53Z e107coders $
 |     $Author: e107coders $
 +----------------------------------------------------------------------------+
 */
@@ -101,6 +101,8 @@
 }
 
 // $dbupdate["701_to_702"] = LAN_UPDATE_8." .7.1 ".LAN_UPDATE_9." .7.2";
+$dbupdate["103_to_104"] = LAN_UPDATE_8." 1.0.3 ".LAN_UPDATE_9." 1.0.4";
+$dbupdate["10x_to_103"] = LAN_UPDATE_8." 1.0.x ".LAN_UPDATE_9." 1.0.3";
 $dbupdate["70x_to_706"] = LAN_UPDATE_8." .70x ".LAN_UPDATE_9." .706";
 $dbupdate["617_to_700"] = LAN_UPDATE_8." .617 ".LAN_UPDATE_9." .7";
 $dbupdate["616_to_617"] = LAN_UPDATE_8." .616 ".LAN_UPDATE_9." .617";
@@ -174,6 +176,78 @@
 }
 */
 
+function update_103_to_104($type='')
+{
+	
+	global $sql; // , $e107cache;	
+	
+	$stripsan = array('amp;','[sanitised]','[/sanitised]','##xss##');
+ 
+ 	if($sql->db_Select('core','e107_value',"e107_name = 'SitePrefs' AND e107_value LIKE '%amp;amp;%' LIMIT 1"))
+	{
+		if($type == 'do')
+		{
+			$row = $sql->db_Fetch(MYSQL_ASSOC);
+			
+			if(trim($row['e107_value']) != '')
+			{
+				$newValue = str_replace($stripsan,'',$row['e107_value']);
+				$sql->db_Update('core',"e107_value = \"".$newValue."\" WHERE e107_name = 'SitePrefs' LIMIT 1");
+			}
+		}
+		
+		return update_needed('Prefs require cleaning');
+	}
+			
+	return TRUE; // No updates needed	
+ 		
+}
+
+
+
+
+
+function update_10x_to_103($type='')
+{
+	
+	global $sql,$ns; // , $e107cache;	
+		
+	if ($sql -> db_Query("SHOW INDEX FROM ".MPREFIX."news")) // add missing indexes to news table. 
+	{
+		$found = array();
+		while($row = $sql -> db_Fetch(MYSQL_ASSOC))
+		{
+			$found[] = $row['Key_name'];
+		}
+			
+		if (!in_array('news_sticky', $found) && !in_array('news_datestamp', $found)) 
+		{
+			if($type == 'do')
+			{
+				mysql_query("ALTER TABLE `".MPREFIX."news` ADD INDEX `news_sticky` (`news_sticky`)");
+				catch_error();
+				mysql_query("ALTER TABLE `".MPREFIX."news` ADD INDEX `news_datestamp` (`news_datestamp`)");
+				catch_error();
+				mysql_query("ALTER TABLE `".MPREFIX."news` ADD INDEX `news_start` ( `news_start` )");
+				catch_error();
+				
+				; 
+				// $e107cache->delete("nq_admin_update");
+				return '';		
+			}
+			
+			return update_needed();
+		}
+	}
+
+	// No updates needed
+	return TRUE;
+	
+	
+}
+
+
+
 function update_70x_to_706($type='') {
 	global $sql,$ns;
 
@@ -1712,13 +1786,15 @@
 	$ns->tablerender("Extended Users", "Updated extended user field data");
 }
 
-function update_needed()
+function update_needed($details='')
 {
 	global $ns;
 	if(E107_DEBUG_LEVEL)
 	{
 		$tmp = debug_backtrace();
-		$ns->tablerender("", "<div style='text-align:center'>Update required in ".basename(__FILE__)." on line ".$tmp[0]['line']."</div>");
+		$text = "Update required in ".basename(__FILE__)." on line ".$tmp[0]['line'];
+		$text .= ($details) ? " (".$details.") " : "";
+		$ns->tablerender("", "<div style='text-align:center'>".$text."</div>");
 	}
 	return FALSE;
 }
diff -aruN 1.0.2.src/e107_admin/ver.php 1.0.4.src/e107_admin/ver.php
--- 1.0.2.src/e107_admin/ver.php	2013-10-11 14:02:27.071000028 -0500
+++ 1.0.4.src/e107_admin/ver.php	2013-09-26 16:49:50.000000000 -0500
@@ -1,13 +1,13 @@
 <?php
 /*
-* Copyright (c) 2012 e107 Inc e107.org, Licensed under GNU GPL (http://www.gnu.org/licenses/gpl.txt)
+* Copyright (c) 2013 e107 Inc e107.org, Licensed under GNU GPL (http://www.gnu.org/licenses/gpl.txt)
 * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_admin/ver.php $
-* $Id: ver.php 12998 2012-10-22 20:56:44Z e107coders $
+* $Id: ver.php 13107 2013-05-21 21:55:27Z e107coders $
 *
 * Version file
 */
 
 if (!defined('e107_INIT')) { exit; }
 
-$e107info['e107_version'] = "1.0.2";
+$e107info['e107_version'] = "1.0.4";
 ?>
diff -aruN 1.0.2.src/e107_files/e107.css 1.0.4.src/e107_files/e107.css
--- 1.0.2.src/e107_files/e107.css	2013-10-11 14:02:27.085000028 -0500
+++ 1.0.4.src/e107_files/e107.css	2013-09-26 16:49:50.000000000 -0500
@@ -41,4 +41,6 @@
 ul{
 	margin-top:0px;
 	margin-bottom:0px;
-}
\ No newline at end of file
+}
+
+img.bbcode { max-width:100% }
\ No newline at end of file
diff -aruN 1.0.2.src/e107_files/shortcode/admin_latest.sc 1.0.4.src/e107_files/shortcode/admin_latest.sc
--- 1.0.2.src/e107_files/shortcode/admin_latest.sc	2013-10-11 14:02:27.101000028 -0500
+++ 1.0.4.src/e107_files/shortcode/admin_latest.sc	2013-09-26 16:49:50.000000000 -0500
@@ -1,4 +1,4 @@
-// $Id: admin_latest.sc 11836 2010-09-30 21:43:10Z e107coders $
+// $Id: admin_latest.sc 13081 2013-03-10 00:07:40Z e107coders $
 //<?
 if (ADMIN) 
 {
@@ -10,10 +10,14 @@
 
 	   		$active_uploads = $sql -> db_Count("upload", "(*)", "WHERE upload_active = '0' ");
 			$submitted_news = $sql -> db_Count("submitnews", "(*)", "WHERE submitnews_auth = '0' ");
+			$comments_pending = $sql -> db_Count("comments", "(*)", "WHERE comment_blocked = 2 ");
+		
 
 			$text = "<div style='padding-bottom: 2px;'>".E_16_NEWS.($submitted_news ? " <a href='".e_ADMIN_ABS."newspost.php?sn'>".ADLAN_LAT_2.": $submitted_news</a>" : " ".ADLAN_LAT_2.": 0")."</div>";
+			$text .= "<div style='padding-bottom: 2px;'>".E_16_COMMENT.($comments_pending ? " <a href='".e_ADMIN_ABS."modcomment.php'>".ADLAN_LAT_9.": $comments_pending</a>" : " ".ADLAN_LAT_9.": ".$comments_pending)."</div>";		
 			$text .= "<div style='padding-bottom: 2px;'>".E_16_UPLOADS.($active_uploads ? " <a href='".e_ADMIN_ABS."upload.php'>".ADLAN_LAT_7.": $active_uploads</a>" : " ".ADLAN_LAT_7.": ".$active_uploads)."</div>";
-
+			
+		
 			if (isset($pref['e_latest_list']) && is_array($pref['e_latest_list']))
 			{
 				foreach($pref['e_latest_list'] as $val)
diff -aruN 1.0.2.src/e107_files/shortcode/batch/usersettings_shortcodes.php 1.0.4.src/e107_files/shortcode/batch/usersettings_shortcodes.php
--- 1.0.2.src/e107_files/shortcode/batch/usersettings_shortcodes.php	2013-10-11 14:02:27.107000028 -0500
+++ 1.0.4.src/e107_files/shortcode/batch/usersettings_shortcodes.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,8 +11,8 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_files/shortcode/batch/usersettings_shortcodes.php $
-|     $Revision: 12891 $
-|     $Id: usersettings_shortcodes.php 12891 2012-07-20 20:46:04Z e107coders $
+|     $Revision: 13059 $
+|     $Id: usersettings_shortcodes.php 13059 2012-12-07 20:19:07Z e107coders $
 |     $Author: e107coders $
 +----------------------------------------------------------------------------+
 */
@@ -134,7 +134,7 @@
 
 SC_BEGIN SIGNATURE
 global $curVal,$pref;
-if(!check_class($pref['signature_access']))
+if(!check_class(varset($pref['signature_access'],0)))
 {
 	return;
 }
diff -aruN 1.0.2.src/e107_files/shortcode/batch/user_shortcodes.php 1.0.4.src/e107_files/shortcode/batch/user_shortcodes.php
--- 1.0.2.src/e107_files/shortcode/batch/user_shortcodes.php	2013-10-11 14:02:27.106000028 -0500
+++ 1.0.4.src/e107_files/shortcode/batch/user_shortcodes.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,9 +11,9 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_files/shortcode/batch/user_shortcodes.php $
-|     $Revision: 11956 $
-|     $Id: user_shortcodes.php 11956 2010-11-09 20:53:58Z e107steved $
-|     $Author: e107steved $
+|     $Revision: 13106 $
+|     $Id: user_shortcodes.php 13106 2013-05-17 23:33:50Z e107coders $
+|     $Author: e107coders $
 +----------------------------------------------------------------------------+
 */
 if (!defined('e107_INIT')) { exit; }
@@ -229,6 +229,15 @@
 return $user['user_id'];
 SC_END
 
+SC_BEGIN USER_IP
+global $user;
+if(ADMIN)
+{
+	return $user['user_ip'];
+}
+SC_END 
+
+
 SC_BEGIN USER_NAME
 global $user;
 return $user['user_name'];
diff -aruN 1.0.2.src/e107_handlers/e_parse_class.php 1.0.4.src/e107_handlers/e_parse_class.php
--- 1.0.2.src/e107_handlers/e_parse_class.php	2013-10-11 14:02:27.123000028 -0500
+++ 1.0.4.src/e107_handlers/e_parse_class.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,9 +11,9 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_handlers/e_parse_class.php $
-|     $Revision: 12910 $
-|     $Id: e_parse_class.php 12910 2012-07-24 09:34:58Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13088 $
+|     $Id: e_parse_class.php 13088 2013-03-26 18:07:00Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 if (!defined('e107_INIT')) { exit; }
@@ -171,7 +171,7 @@
 			{
 				$no_encode = TRUE;
 			}
-			if (!isset($pref['html_abuse']) || $pref['html_abuse'])
+			if (($mod != 'pReFs') && ((!isset($pref['html_abuse']) || $pref['html_abuse'])))
 			{
 				if ($this->htmlAbuseFilter($data)) $no_encode = FALSE;
 			}
@@ -199,7 +199,8 @@
 
 
 	/**
-	 *	Check for HTML closing tag for input elements, without corresponding opening tag
+	 *	Check for umatched 'dangerous' HTML tags
+	 *		(these can destroy page layout where users are able to post HTML)
 	 *
 	 *	@param string $data
 	 *	@param string $tagList - if empty, uses default list of input tags. Otherwise a CSV list of tags to check (any type)
@@ -217,17 +218,41 @@
 		{
 			$checkTags = explode(',', $tagList);
 		}
-		$data = strtolower(preg_replace('#\[code.*?\[\/code\]#i', '', $data));		// Ignore code blocks. All lower case simplifies subsequent processing
-		foreach ($checkTags as $tag)
-		{
-			$aCount = substr_count($data,  '<'.$tag);			// Count opening tags
-			$bCount = substr_count($data,  '</'.$tag);			// Count closing tags
-			if ($aCount != $bCount)
-			{
-				return TRUE;		// Potentially abusive HTML found - tags don't balance
+		$tagArray = array_flip($checkTags);
+		foreach ($tagArray as &$v) { $v = 0; };		// Data fields become zero; keys are tag names.
+		$data = strtolower(preg_replace('#\[code\].*?\[\/code\]#i', '', $data));            // Ignore code blocks. All lower case simplifies the rest
+		$matches = array();
+		if (!preg_match_all('#<(\/|)([^<>]*?[^\/])>#', $data, $matches, PREG_SET_ORDER))
+		{
+			//echo "No tags found<br />";
+			return TRUE;				// No tags found; so all OK
+		}
+		//print_a($matches);
+		foreach ($matches as $m)
+		{
+			// $m[0] is the complete tag; $m[1] is '/' or empty; $m[2] is the tag and any attributes
+			list ($tag) = explode(' ', $m[2], 2);
+			if (!isset($tagArray[$tag])) continue;			// Not a tag of interest
+			if ($m[1] == '/')
+			{	// Closing tag
+				if ($tagArray[$tag] == 0) 
+				{
+					//echo "Close before open: {$tag}<br />";
+					return TRUE;		// Closing tag before we've had an opening tag
+				}
+				$tagArray[$tag]--;		// Obviously had at least one opening tag
 			}
+			else
+			{	// Opening tag
+				$tagArray[$tag]++;
+			}
+		}
+		//print_a($tagArray);
+		foreach ($tagArray as $t)
+		{
+			if ($t > 0) return TRUE;		// More opening tags than closing tags
 		}
-		return FALSE;		// Nothing detected
+		return FALSE;						// OK now
 	}
 
 
@@ -777,7 +802,11 @@
 
 
 
-
+	/**
+	 *	Truncate an html string to leave specified number of characters outside html tags
+	 *	Caution! May leave an unclosed html tag
+	 *	Caution! utf-8 patch not properly tested
+	 */
 	function html_truncate ($text, $len = 200, $more = ' ... ')
 	{
 		$pos = 0;
@@ -786,10 +815,10 @@
 		$intag = FALSE;
 		while($curlen < $len && $curlen < strlen($text))
 		{
-			switch($text{$pos})
+			switch($text[$pos])
 			{
 				case "<" :
-				if($text{$pos+1} == "/")
+				if($text[$pos+1] == "/")
 				{
 					$closing_tag = TRUE;
 				}
@@ -799,7 +828,7 @@
 				break;
 				
 				case ">" :
-				if($text{$pos-1} == "/")
+				if($text[$pos-1] == "/")
 				{
 					$closing_tag = TRUE;
 				}
@@ -813,7 +842,7 @@
 				break;
 				
 				case "&" :
-				if($text{$pos+1} == "#")
+				if($text[$pos+1] == "#")
 				{
 					$end = strpos(substr($text, $pos, 7), ";");
 					if($end !== FALSE)
@@ -830,9 +859,31 @@
 					break;
 				}
 				default:
-				$pos++;
-				if(!$intag) {$curlen++;}
-				break;
+					if (CHARSET == 'utf-8')
+					{
+						$c = ord($text[$pos]);		// Convert current character to an integer
+						if (($c & 0x80) === 0)
+						{
+							$pos++;					// Its a single-byte character
+						}
+						elseif (($c & 0xe0) === 0xc0)
+						{
+							$pos+= 2;				// Its a 2-byte character
+						}
+						elseif (($c & 0xf0) === 0xe0)
+						{
+							$pos+= 3;				// Its a 3-byte character
+						}
+						else
+						{
+							$pos+= 4;				// Assume ifs 4 bytes (could carry on = theoretically there are 5-byte and 6-byte sequences)
+						}
+					}
+					else
+					{
+						$pos++;
+					}
+					if(!$intag) {$curlen++;}
 			}
 		}
 		$ret = ($tmp_pos > 0 ? substr($text, 0, $tmp_pos+1) : substr($text, 0, $pos));
diff -aruN 1.0.2.src/e107_handlers/language_class.php 1.0.4.src/e107_handlers/language_class.php
--- 1.0.2.src/e107_handlers/language_class.php	2013-10-11 14:02:27.125000028 -0500
+++ 1.0.4.src/e107_handlers/language_class.php	2013-09-26 16:49:50.000000000 -0500
@@ -4,8 +4,8 @@
 |     e107 website system - Language Class.
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_handlers/language_class.php $
-|     $Revision: 12076 $
-|     $Id: language_class.php 12076 2011-02-26 19:12:58Z e107coders $
+|     $Revision: 13015 $
+|     $Id: language_class.php 13015 2012-10-30 02:04:28Z e107coders $
 |     $Author: e107coders $
 +----------------------------------------------------------------------------+
 */
@@ -202,7 +202,7 @@
 			"Japanese"		=> "日本語",
 			"Korean"		=> "한국어",
 			"Lithuanian"	=> "Lietuvių",
-			"Mongolian"		=> "монгол",
+			"Mongolian"		=> "Монгол",
 			"Nepali"		=> "नेपाली",
 			"Norwegian"		=> "Norsk",
 			"Persian"	   	=> "فارسي",
diff -aruN 1.0.2.src/e107_handlers/login.php 1.0.4.src/e107_handlers/login.php
--- 1.0.2.src/e107_handlers/login.php	2013-10-11 14:02:27.126000028 -0500
+++ 1.0.4.src/e107_handlers/login.php	2013-09-26 16:49:50.000000000 -0500
@@ -12,9 +12,9 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_handlers/login.php $
-|     $Revision: 12065 $
-|     $Id: login.php 12065 2011-02-08 07:38:55Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13070 $
+|     $Id: login.php 13070 2013-01-25 08:11:43Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 
@@ -121,12 +121,29 @@
 				$user_email = $lode['user_email'];
 
 				/* restrict more than one person logging in using same us/pw */
-				if($pref['disallowMultiLogin']) {
-					if($sql -> db_Select("online", "online_ip", "online_user_id='".$user_id.".".$user_name."'")) {
-						define("LOGINMESSAGE", LAN_304."<br /><br />");
-						$sql->db_Insert('generic', "0, 'failed_login', '".time()."', 0, '{$fip}', '$user_id', '".$tp->toDB(LAN_LOGIN_16.' ::: '.LAN_LOGIN_1.': '.$username.', '.LAN_LOGIN_17.': ').md5($ouserpass)."' ");
-						$this -> checkibr($fip);
-						return FALSE;
+				if($pref['disallowMultiLogin']) 
+				{
+					if($sql -> db_Select('online', 'online_ip, online_timestamp', "online_user_id='".$user_id.".".$user_name."'")) 
+					{
+					// Check whether user 'went away' quite a long time ago (I know this could be done in the db_Select(), but want to identify
+					// particular situation for debug).
+						global $online_timeout;
+						if(!isset($online_timeout)) 
+						{
+							$online_timeout = 300;
+						}
+						$row = $sql->db_Fetch(MYSQL_ASSOC);
+						if ($row['online_timestamp'] < (time() - $online_timeout))
+						{	// Allow the login (user probably went away quite a while ago) - leave option to log if next line uncommented
+							//$sql->db_Insert('generic', "0, 'failed_login', '".time()."', 0, '{$fip}', '$user_id', '".$tp->toDB('Debug - user already logged in'.' ::: '.LAN_LOGIN_1.': '.$username)."' ");
+						}
+						else
+						{
+							define('LOGINMESSAGE', LAN_304.'<br /><br />');
+							$sql->db_Insert('generic', "0, 'failed_login', '".time()."', 0, '{$fip}', '$user_id', '".$tp->toDB(LAN_LOGIN_16.' ::: '.LAN_LOGIN_1.': '.$username.', '.LAN_LOGIN_17.': ').md5($ouserpass)."' ");
+							$this -> checkibr($fip);
+							return FALSE;
+						}
 					}
 				}
 
diff -aruN 1.0.2.src/e107_handlers/notify_class.php 1.0.4.src/e107_handlers/notify_class.php
--- 1.0.2.src/e107_handlers/notify_class.php	2013-10-11 14:02:27.128000028 -0500
+++ 1.0.4.src/e107_handlers/notify_class.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,14 +11,16 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_handlers/notify_class.php $
-|     $Revision: 12892 $
-|     $Id: notify_class.php 12892 2012-07-21 03:20:42Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13014 $
+|     $Id: notify_class.php 13014 2012-10-29 22:25:26Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 
 if (!defined('e107_INIT')) { exit; }
 
+require_once(e_HANDLER.'date_handler.php');
+
 class notify {
 
 	var $notify_prefs;
@@ -221,7 +223,16 @@
 	global $nt, $tp;
 	foreach($data as $key=>$val)
 	{
-		$message .= "<br /><b>".$key.":</b> ".$val;
+		switch ($key)
+		{
+			case 'comment_subject' :	// Just ignore - its in the title
+				break;
+			case 'comment_time' :
+				$message .= "<br /><b>".$key.":</b> ".convert::convert_date($val, 'short');
+				break;
+			default :
+			$message .= "<br /><b>".$key.":</b> ".$val;
+		}
 	}	
 	$nt -> send('commentpending', NT_LAN_CM_1.': '.$data['comment_subject'], $message);
 }
diff -aruN 1.0.2.src/e107_handlers/plugin_class.php 1.0.4.src/e107_handlers/plugin_class.php
--- 1.0.2.src/e107_handlers/plugin_class.php	2013-10-11 14:02:27.137000028 -0500
+++ 1.0.4.src/e107_handlers/plugin_class.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,9 +11,9 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_handlers/plugin_class.php $
-|     $Revision: 12461 $
-|     $Id: plugin_class.php 12461 2011-12-10 19:32:27Z secretr $
-|     $Author: secretr $
+|     $Revision: 13100 $
+|     $Id: plugin_class.php 13100 2013-04-17 21:07:05Z e107coders $
+|     $Author: e107coders $
 |
 +----------------------------------------------------------------------------+
 */
@@ -364,12 +364,23 @@
 	}
 
 
-	function manage_tables($action, $var) {
+	function manage_tables($action, $var) 
+	{
 		global $sql;
 		if ($action == 'add') {
-			if (is_array($var)) {
-				foreach($var as $tab) {
-					if (!$sql->db_Query($tab)) {
+			if (is_array($var)) 
+			{
+				foreach($var as $tab) 
+				{
+					$tab = str_replace("TYPE=MyISAM","ENGINE=MyISAM",$tab);
+					
+					if(strtolower(CHARSET) == 'utf8' && !preg_match("/MyISAM.*CHARSET ?= ?utf8/i",$tab)) // Make all tables utf-8. 
+					{
+						$tab = str_replace("MyISAM", "MyISAM DEFAULT CHARSET=utf8", $tab);		
+					}
+
+					if (!$sql->db_Query($tab)) 
+					{
 						return FALSE;
 					}
 				}
diff -aruN 1.0.2.src/e107_handlers/ren_help.php 1.0.4.src/e107_handlers/ren_help.php
--- 1.0.2.src/e107_handlers/ren_help.php	2013-10-11 14:02:27.139000028 -0500
+++ 1.0.4.src/e107_handlers/ren_help.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,8 +11,8 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_handlers/ren_help.php $
-|     $Revision: 12622 $
-|     $Id: ren_help.php 12622 2012-04-02 01:48:52Z e107coders $
+|     $Revision: 13071 $
+|     $Id: ren_help.php 13071 2013-01-28 18:47:30Z e107coders $
 |     $Author: e107coders $
 +----------------------------------------------------------------------------+
 */
@@ -95,8 +95,8 @@
 
 function Size_Select($formid='size_selector') {
 	$text ="<!-- Start of Size selector -->
-	<div style='margin-left:0px;margin-right:0px; position:relative;z-index:1000;float:right;display:none' id='{$formid}'>";
-	$text .="<div style='position:absolute; bottom:30px; right:125px'>";
+	<div style='margin-left:0px;margin-right:0px; position:relative;z-index:1000;float:right'>";
+	$text .="<div style='position:absolute; bottom:30px; right:125px;display:none' id='{$formid}'>";
 	$text .= "<table class='fborder' style='background-color: #fff'>
 	<tr><td class='forumheader3'>
 	<select class='tbox bb-sizeselect' name='sizeselect' onchange=\"addtext(this.value); expandit('{$formid}')\">
@@ -116,8 +116,8 @@
 function Color_Select($formid='col_selector') {
 
 	$text = "<!-- Start of Color selector -->
-	<div style='margin-left: 0px; margin-right: 0px; width: 221px; position: relative; z-index: 1000; float: right; display: none' id='{$formid}' onclick=\"this.style.display='none'\" >
-	<div style='position: absolute; bottom: 30px; right: 145px; width: 221px'>";
+	<div style='margin-left: 0px; margin-right: 0px; width: 221px; position: relative; z-index: 1000; float: right' >
+	<div style='position: absolute; bottom: 30px; right: 145px; width: 221px; display: none' id='{$formid}' onclick=\"this.style.display='none'\">";
 
 	$text .= "<script type='text/javascript'>
 	//<![CDATA[
@@ -199,8 +199,8 @@
     sort($imagelist);
 
 	$text ="<!-- Start of PreImage selector -->
-	<div class='bb-preimageselect' style='margin-left:0px;margin-right:100px; position:relative;z-index:999;float:right;display:none' id='{$formid}'>";
-	$text .="<div style='position:absolute; bottom:30px; right:100px'>";
+	<div class='bb-preimageselect' style='margin-left:0px;margin-right:100px; position:relative;z-index:999;float:right'>";
+	$text .="<div style='position:absolute; bottom:30px; right:100px;display:none' id='{$formid}'>";
 	$text .= "<table class='fborder bb-preimageselect' style='background-color: #fff'>
 	<tr><td class='forumheader3' style='white-space: nowrap'>";
 
@@ -273,8 +273,8 @@
 		}
 	}
 	$text ="<!-- Start of PreFile selector -->
-	<div class='bb-prefileselect' style='margin-left:0px;margin-right:100px; position:relative;z-index:1000;float:right;display:none' id='{$formid}'>";
-	$text .="<div style='position:absolute; bottom:30px; right:75px'>";
+	<div class='bb-prefileselect' style='margin-left:0px;margin-right:100px; position:relative;z-index:1000;float:right'>";
+	$text .="<div style='position:absolute; bottom:30px; right:75px;display:none' id='{$formid}'>";
 	$text .= "<table class='fborder bb-prefileselect' style='background-color: #fff'>
 	<tr><td class='forumheader3' style='white-space: nowrap'>";
 
@@ -323,8 +323,8 @@
 {
 	require_once(e_HANDLER."emote.php");
 	$text ="<!-- Start of Emoticon selector -->
-	<div style='margin-left:0px;margin-right:0px; position:relative;z-index:1000;float:right;display:none' id='{$formid}' onclick=\"this.style.display='none'\" >
-		<div style='position:absolute; bottom:30px; right:75px; width:221px; height:133px; overflow:auto;'>
+	<div style='margin-left:0px;margin-right:0px; position:relative;z-index:1000;float:right' >
+		<div style='position:absolute; bottom:30px; right:75px; width:221px; height:133px; overflow:auto;display:none' id='{$formid}' onclick=\"this.style.display='none'\">
 			<table class='fborder' style='background-color:#fff;'>
 			<tr><td class='forumheader3'>
 			".r_emote()."
diff -aruN 1.0.2.src/e107_handlers/secure_img_handler.php 1.0.4.src/e107_handlers/secure_img_handler.php
--- 1.0.2.src/e107_handlers/secure_img_handler.php	2013-10-11 14:02:27.143000028 -0500
+++ 1.0.4.src/e107_handlers/secure_img_handler.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,8 +11,8 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_handlers/secure_img_handler.php $
-|     $Revision: 12314 $
-|     $Id: secure_img_handler.php 12314 2011-07-08 02:55:07Z e107coders $
+|     $Revision: 13080 $
+|     $Id: secure_img_handler.php 13080 2013-03-09 23:49:48Z e107coders $
 |     $Author: e107coders $
 +----------------------------------------------------------------------------+
 */
@@ -103,7 +103,8 @@
 	function r_image()
 	{
 		$code = $this->create_code();
-		return "<img src='".e_HTTP.$this->HANDLERS_DIRECTORY."secure_img_render.php?{$code}' alt='' />";
+		return "<img src='".e_HTTP.$this->HANDLERS_DIRECTORY."secure_img_render.php?{$code}' alt='' />
+		<input type='text' id='email2' name='email2' value='' style='display:none' />";
 	}
 
 
diff -aruN 1.0.2.src/e107_handlers/sitelinks_class.php 1.0.4.src/e107_handlers/sitelinks_class.php
--- 1.0.2.src/e107_handlers/sitelinks_class.php	2013-10-11 14:02:27.144000028 -0500
+++ 1.0.4.src/e107_handlers/sitelinks_class.php	2013-09-26 16:49:50.000000000 -0500
@@ -12,9 +12,9 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_handlers/sitelinks_class.php $
-|     $Revision: 12761 $
-|     $Id: sitelinks_class.php 12761 2012-05-28 13:42:49Z berckoff $
-|     $Author: berckoff $
+|     $Revision: 13075 $
+|     $Id: sitelinks_class.php 13075 2013-02-20 21:30:13Z e107steved $
+|     $Author: e107steved $
 +---------------------------------------------------------------+
 */
 if (!defined('e107_INIT')) { exit; }
@@ -118,6 +118,7 @@
 
         $text = "\n<!-- BoF Sitelinks ({$cat}) -->\n{$style['prelink']}\n";
 		
+		$text = '';
         if ($style['linkdisplay'] != 3) 
 		{
             foreach ($this->eLinkList['head_menu'] as $key => $link)
diff -aruN 1.0.2.src/e107_handlers/xml_class.php 1.0.4.src/e107_handlers/xml_class.php
--- 1.0.2.src/e107_handlers/xml_class.php	2013-10-11 14:02:27.215000028 -0500
+++ 1.0.4.src/e107_handlers/xml_class.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,9 +11,9 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_handlers/xml_class.php $
-|     $Revision: 12986 $
-|     $Id: xml_class.php 12986 2012-09-29 14:48:56Z e107steved $
-|     $Author: e107steved $
+|     $Revision: 13094 $
+|     $Id: xml_class.php 13094 2013-04-11 18:18:40Z e107coders $
+|     $Author: e107coders $
 +----------------------------------------------------------------------------+
 */
 
@@ -40,7 +40,7 @@
 	}
 
 
-    function getRemoteXmlFile($address, $timeout = 10)
+    function getRemoteXmlFile($address='', $timeout = 10)
 	{
 		// Could do something like: if ($timeout <= 0) $timeout = $pref['get_remote_timeout'];  here
 		$timeout = min($timeout, 120);
diff -aruN 1.0.2.src/e107_languages/English/admin/lan_admin.php 1.0.4.src/e107_languages/English/admin/lan_admin.php
--- 1.0.2.src/e107_languages/English/admin/lan_admin.php	2013-10-11 14:02:27.297000028 -0500
+++ 1.0.4.src/e107_languages/English/admin/lan_admin.php	2013-09-26 16:49:50.000000000 -0500
@@ -4,8 +4,8 @@
 |     e107 website system - Language File.
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_languages/English/admin/lan_admin.php $
-|     $Revision: 12522 $
-|     $Id: lan_admin.php 12522 2012-01-09 01:50:50Z e107coders $
+|     $Revision: 13012 $
+|     $Id: lan_admin.php 13012 2012-10-28 23:54:26Z e107coders $
 |     $Author: e107coders $
 +----------------------------------------------------------------------------+
 */
@@ -193,6 +193,7 @@
 define("ADLAN_LAT_6", "Reported forum posts");
 define("ADLAN_LAT_7", "File uploads");
 define("ADLAN_LAT_8", "There are unmoderated administrator messages");
+define("ADLAN_LAT_9", "Comments pending");
 
 //LAN_WARNING define("ADLAN_ERR_1", "Warning!");
 define("ADLAN_ERR_2", "There are files on your server that are known to be exploitable. These must be removed <b>immediately</b>. The files are related to the older 0.6xx branch of e107. Please delete the following directories and all their contents:");
diff -aruN 1.0.2.src/e107_languages/English/admin/lan_download.php 1.0.4.src/e107_languages/English/admin/lan_download.php
--- 1.0.2.src/e107_languages/English/admin/lan_download.php	2013-10-11 14:02:27.300000028 -0500
+++ 1.0.4.src/e107_languages/English/admin/lan_download.php	2013-09-26 16:49:50.000000000 -0500
@@ -4,9 +4,9 @@
 |     e107 website system - Language File.
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_languages/English/admin/lan_download.php $
-|     $Revision: 12599 $
-|     $Id: lan_download.php 12599 2012-02-27 14:31:16Z nlstart $
-|     $Author: nlstart $
+|     $Revision: 13037 $
+|     $Id: lan_download.php 13037 2012-11-02 20:55:54Z e107coders $
+|     $Author: e107coders $
 +----------------------------------------------------------------------------+
 */
 define("DOWLAN_1", "Download added to database.");
@@ -152,4 +152,10 @@
 define("DOWLAN_164", "IP");
 define("DOWLAN_165", "Date / time");
 define("DOWLAN_166", "Return to Downloads Front Page");
+
+define("DOWLAN_199", "Beware: after pruning the statistics for each download might not reflect their total history!");
+define("DOWLAN_200", "Number");
+define("DOWLAN_201", "Prune Log");
+define("DOWLAN_202", "Prune Log Details");
+
 ?>
\ No newline at end of file
diff -aruN 1.0.2.src/e107_languages/English/admin/lan_frontpage.php 1.0.4.src/e107_languages/English/admin/lan_frontpage.php
--- 1.0.2.src/e107_languages/English/admin/lan_frontpage.php	2013-10-11 14:02:27.301000028 -0500
+++ 1.0.4.src/e107_languages/English/admin/lan_frontpage.php	2013-09-26 16:49:50.000000000 -0500
@@ -4,9 +4,9 @@
 |     e107 website system - Language File.
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_languages/English/admin/lan_frontpage.php $
-|     $Revision: 11678 $
-|     $Id: lan_frontpage.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13002 $
+|     $Id: lan_frontpage.php 13002 2012-10-22 21:45:59Z e107moc $
+|     $Author: e107moc $
 +----------------------------------------------------------------------------+
 */
 
@@ -23,7 +23,7 @@
 define("FRTLAN_19", "content main parent");
 define("FRTLAN_20", "content category");
 define("FRTLAN_21", "content item");
-// define("FRTLAN_22", "");
+define("FRTLAN_22", "Custom Page");
 // define("FRTLAN_23", "");
 // define("FRTLAN_24", "");
 // define("FRTLAN_25", "");
diff -aruN 1.0.2.src/e107_plugins/banner_menu/config.php 1.0.4.src/e107_plugins/banner_menu/config.php
--- 1.0.2.src/e107_plugins/banner_menu/config.php	2013-10-11 14:02:27.329000021 -0500
+++ 1.0.4.src/e107_plugins/banner_menu/config.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,14 +11,14 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/banner_menu/config.php $
-|     $Revision: 11678 $
-|     $Id: config.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13011 $
+|     $Id: config.php 13011 2012-10-28 16:26:00Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 $eplug_admin = TRUE;
 require_once("../../class2.php");
-if (!getperms("1")) 		// Access to those who can change prefs, theme etc
+if (!isset($pref['plug_installed']['banner_menu']) || !getperms("1")) 		// Access to those who can change prefs, theme etc
 {
 	header("location:".e_BASE."index.php");
 	 exit ;
diff -aruN 1.0.2.src/e107_plugins/blogcalendar_menu/config.php 1.0.4.src/e107_plugins/blogcalendar_menu/config.php
--- 1.0.2.src/e107_plugins/blogcalendar_menu/config.php	2013-10-11 14:02:27.331000028 -0500
+++ 1.0.4.src/e107_plugins/blogcalendar_menu/config.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,14 +11,14 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/blogcalendar_menu/config.php $
-|     $Revision: 11678 $
-|     $Id: config.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13011 $
+|     $Id: config.php 13011 2012-10-28 16:26:00Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 $eplug_admin = TRUE;
 require_once("../../class2.php");
-if (!getperms("1")) {
+if (!isset($pref['plug_installed']['blogcalendar_menu']) || !getperms("1")) {
 	header("location:".e_BASE."index.php");
 	 exit();
 }
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/admin_config.php 1.0.4.src/e107_plugins/calendar_menu/admin_config.php
--- 1.0.2.src/e107_plugins/calendar_menu/admin_config.php	2013-10-11 14:02:27.332000029 -0500
+++ 1.0.4.src/e107_plugins/calendar_menu/admin_config.php	2013-09-26 16:49:50.000000000 -0500
@@ -1,832 +1,1075 @@
-<?php
-/*
-+ ----------------------------------------------------------------------------+
-|     e107 website system
-|
-|     Copyright (C) 2001-2002 Steve Dunstan (jalist@e107.org)
-|     Copyright (C) 2008-2010 e107 Inc (e107.org)
-|
-|
-|     Released under the terms and conditions of the
-|     GNU General Public License (http://gnu.org).
-|
-|     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/admin_config.php $
-|     $Revision: 11678 $
-|     $Id: admin_config.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
-|
-| 02.11.06 - Cache clear option added
-| 10.11.06 - Support for updated templates etc
-|
-+----------------------------------------------------------------------------+
-*/
-$eplug_admin = true;		// Make sure we show admin theme
-require_once("../../class2.php");
-require_once(e_HANDLER."userclass_class.php");
-if (!getperms("P"))
-{
-  header("location:".e_BASE."index.php");
+<?php
+/*
+ * e107 website system
+ *
+ * Copyright (C) 2002-2012 e107 Inc (e107.org)
+ * Released under the terms and conditions of the
+ * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
+ *
+ * Event calendar - admin functions
+ *
+ * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/admin_config.php $
+ * $Id: admin_config.php 13009 2012-10-27 15:19:55Z e107steved $
+ */
+
+$eplug_admin = true;		// Make sure we show admin theme
+$e_sub_cat = 'event_calendar';
+require_once("../../class2.php");
+require_once(e_HANDLER."userclass_class.php");
+if (!getperms('P'))
+{
+  header("location:".e_BASE."index.php");
   exit;
-}
-
-
-include_lan(e_PLUGIN."calendar_menu/languages/".e_LANGUAGE.".php");
-
-
-$message = "";
-$calendarmenu_text = '';	// Notice removal
-$calendarmenu_msg  = '';	// Notice removal
-
-if (isset($_POST['updatesettings'])) {
-	$pref['eventpost_admin'] = $_POST['eventpost_admin'];
-	$pref['eventpost_adminlog'] = $_POST['eventpost_adminlog'];
-	$pref['eventpost_showeventcount'] = $_POST['eventpost_showeventcount'];
-	$pref['eventpost_forum'] = $_POST['eventpost_forum'];
-	$pref['eventpost_recentshow'] = $_POST['eventpost_recentshow'];
-	$pref['eventpost_super'] = $_POST['eventpost_super'];
-	$pref['eventpost_menulink'] = $_POST['eventpost_menulink'];
-	$pref['eventpost_dateformat'] = $_POST['eventpost_dateformat'];
-	$pref['eventpost_fivemins'] = $_POST['eventpost_fivemins'];
-	$pref['eventpost_weekstart'] = $_POST['eventpost_weekstart'];
-	$pref['eventpost_lenday'] = $_POST['eventpost_lenday'];
-	$pref['eventpost_caltime'] = $_POST['eventpost_caltime'];
-	$pref['eventpost_datedisplay'] = $_POST['eventpost_datedisplay'];
-	$pref['eventpost_timedisplay']	= $_POST['eventpost_timedisplay'];
-	$pref['eventpost_timecustom'] = $_POST['eventpost_timecustom'];
-	$pref['eventpost_dateevent'] = $_POST['eventpost_dateevent'];
-	$pref['eventpost_datenext'] = $_POST['eventpost_datenext'];
-	$pref['eventpost_eventdatecustom'] = $_POST['eventpost_eventdatecustom'];
-	$pref['eventpost_nextdatecustom'] = $_POST['eventpost_nextdatecustom'];
-	$pref['eventpost_mailsubject'] = $_POST['eventpost_mailsubject'];
-	$pref['eventpost_mailfrom'] = $_POST['eventpost_mailfrom'];
-	$pref['eventpost_mailaddress'] = $_POST['eventpost_mailaddress'];
-	$pref['eventpost_asubs'] = $_POST['eventpost_asubs'];
-	$pref['eventpost_emaillog'] = $_POST['eventpost_emaillog'];
-	save_prefs();
-	$e107cache->clear('nq_event_cal');		// Clear cache as well, in case displays changed
-	$message = EC_LAN_75; // "Calendar settings updated.";
-}
-
-// ****************** FORTHCOMING EVENTS ******************
-if (isset($_POST['updateforthcoming']))
-{
-  $pref['eventpost_menuheading'] = $_POST['eventpost_fe_menuheading'];
-  $pref['eventpost_daysforward'] = $_POST['eventpost_fe_daysforward'];
-  $pref['eventpost_numevents'] = $_POST['eventpost_fe_numevents'];
-  $pref['eventpost_checkrecur'] = $_POST['eventpost_fe_checkrecur'];
-  $pref['eventpost_linkheader'] = $_POST['eventpost_fe_linkheader'];
-  $pref['eventpost_fe_set'] =  implode(",", $_POST['fe_eventclass']);
-  $pref['eventpost_showcaticon'] = $_POST['eventpost_showcaticon'];
-  $pref['eventpost_namelink'] = $_POST['eventpost_namelink'];
-  save_prefs();
-  $e107cache->clear('nq_event_cal');		// Clear cache as well, in case displays changed
-  $message = EC_ADLAN_A109; // "Forthcoming Events settings updated.";
-}
-
-if (e_QUERY)
-{
-  $qs = explode(".", e_QUERY);
-}
-
-require_once('ecal_class.php');
-$ecal_class = new ecal_class;
-
-
-// ****************** MAINTENANCE ******************
-if (isset($_POST['deleteold']) && isset($_POST['eventpost_deleteoldmonths']))
-{
-  $back_count = $_POST['eventpost_deleteoldmonths'];
-  if (($back_count >= 1) && ($back_count <= 12))
-  {
-    $old_date = intval(mktime(0,0,0,$ecal_class->now_date['mon']-$back_count,1,$ecal_class->now_date['year']));
-	$old_string = strftime("%d %B %Y",$old_date);
-//	$message = "Back delete {$back_count} months. Oldest date = {$old_string}";
-	$qs[0] = "confdel";
-	$qs[1] = $old_date;
-  }
-  else
-    $message = EC_ADLAN_A148;
-}
-
-
-if (isset($_POST['cache_clear']))
-{
-  $qs[0] = "confcache";
-}
-
-require_once(e_ADMIN."auth.php");
-
-
-
-
-// Actually delete back events
-if (isset($_POST['confirmdeleteold']) && isset($qs[0]) && ($qs[0] == "backdel"))
-{
-  $old_date = $qs[1];
-  $old_string = strftime("%d %B %Y",$old_date);
-	// Check both start and end dates to avoid problems with events originally entered under 0.617
-  $qry = "event_start < {$old_date} AND event_end < {$old_date} AND event_recurring = 0";
-//  $message = "Back delete {$back_count} months. Oldest date = {$old_string}  Query = {$qry}";
-	if ($sql -> db_Delete("event",$qry))
-	{
-  // Add in a log event
-	  $ecal_class->cal_log(4,'db_Delete - earlier than {$old_string} (past {$back_count} months)',$qry);
-      $message = EC_ADLAN_A146.$old_string.EC_ADLAN_A147;
-	}
-	else
-	{
-	  $message = EC_ADLAN_A149." : ".$sql->mySQLresult;
-	}
-
-  $qs[0] = "maint";
-}
-
-
-// Actually empty cache
-if (isset($_POST['confirmdelcache']) && isset($qs[0]) &&($qs[0] == "cachedel"))
-{
-  $e107cache->clear('nq_event_cal');
-  $message = EC_ADLAN_A163;
-  $qs[0] = "maint";			// Re-display maintenance menu
-}
-
-
-// Prompt to delete back events
-if(isset($qs[0]) && ($qs[0] == "confdel"))
-{
-	$old_string = strftime("%d %B %Y",$qs[1]);
-	$text = "<div style='text-align:center'>
-	<form method='post' action='".e_SELF."?backdel.{$qs[1]}'>
-	<table style='width:97%' class='fborder'>
-	<tr>
-		<td class='forumheader3' style='width:100%;vertical-align:top;rext-align:center;'>".EC_ADLAN_A150.$old_string." </td>
-	</tr>
-	<tr><td colspan='2'  style='text-align:center' class='fcaption'><input class='button' type='submit' name='confirmdeleteold' value='".EC_LAN_50."' /></td></tr>
-	</table></form></div>";
-
-	$ns->tablerender("<div style='text-align:center'>".EC_LAN_50."</div>", $text);
-}
-
-
-// Prompt to clear cache
-if (isset($qs[0]) && ($qs[0] == "confcache"))
-{
-	$text = "<div style='text-align:center'>
-	<form method='post' action='".e_SELF."?cachedel'>
-	<table style='width:97%' class='fborder'>
-	<tr>
-		<td class='forumheader3' style='width:100%;vertical-align:top;rext-align:center;'>".EC_ADLAN_A162." </td>
-	</tr>
-	<tr><td colspan='2'  style='text-align:center' class='fcaption'><input class='button' type='submit' name='confirmdelcache' value='".EC_LAN_50."' /></td></tr>
-	</table></form></div>";
-
-	$ns->tablerender("<div style='text-align:center'>".EC_LAN_50."</div>", $text);
-}
-
-
-if (isset($message))
-{
-  $ns->tablerender("", "<div style='text-align:center'><b>$message</b></div>");
-}
-
-
-
-//category
-if(isset($qs[0]) && $qs[0] == "cat")
-{
-	$calendarmenu_db = new DB;
-	$calendarmenu_action = '';
-	if (isset($_POST['calendarmenu_action'])) $calendarmenu_action = $_POST['calendarmenu_action'];
-	$calendarmenu_edit = FALSE;
-	// * If we are updating then update or insert the record
-	if ($calendarmenu_action == 'update')
-	{
-		$calendarmenu_id = $_POST['calendarmenu_id'];
-		if ($calendarmenu_id == 0)
-		{
-			// New record so add it
-			// Enumerate fields so it doesn't matter if they're in the wrong order.
-			// db_Insert can take an array of key => value pairs
-			$calendarmenu_args = array (
-			'event_cat_id'			=> 0,
+}
+
+
+include_lan(e_PLUGIN."calendar_menu/languages/".e_LANGUAGE.".php");
+
+
+$message = "";
+$calendarmenu_text = '';	// Notice removal
+$calendarmenu_msg  = '';	// Notice removal
+
+if (isset($_POST['updatesettings'])) {
+	$pref['eventpost_admin'] = $_POST['eventpost_admin'];
+	$pref['eventpost_adminlog'] = $_POST['eventpost_adminlog'];
+	$pref['eventpost_showeventcount'] = $_POST['eventpost_showeventcount'];
+	$pref['eventpost_showmouseover'] = $_POST['eventpost_showmouseover'];
+	$pref['eventpost_forum'] = $_POST['eventpost_forum'];
+	$pref['eventpost_recentshow'] = $_POST['eventpost_recentshow'];
+	$pref['eventpost_super'] = $_POST['eventpost_super'];
+	$pref['eventpost_menulink'] = $_POST['eventpost_menulink'];
+	$pref['eventpost_dateformat'] = $_POST['eventpost_dateformat'];
+	$pref['eventpost_fivemins'] = $_POST['eventpost_fivemins'];
+	$pref['eventpost_weekstart'] = $_POST['eventpost_weekstart'];
+	$pref['eventpost_lenday'] = $_POST['eventpost_lenday'];
+	$pref['eventpost_caltime'] = $_POST['eventpost_caltime'];
+	$pref['eventpost_datedisplay'] = $_POST['eventpost_datedisplay'];
+	$pref['eventpost_timedisplay']	= $_POST['eventpost_timedisplay'];
+	$pref['eventpost_timecustom'] = $_POST['eventpost_timecustom'];
+	$pref['eventpost_dateevent'] = $_POST['eventpost_dateevent'];
+	$pref['eventpost_datenext'] = $_POST['eventpost_datenext'];
+	$pref['eventpost_eventdatecustom'] = $_POST['eventpost_eventdatecustom'];
+	$pref['eventpost_nextdatecustom'] = $_POST['eventpost_nextdatecustom'];
+	$pref['eventpost_printlists'] = $_POST['eventpost_printlists'];
+	$pref['eventpost_mailsubject'] = $_POST['eventpost_mailsubject'];
+	$pref['eventpost_mailfrom'] = $_POST['eventpost_mailfrom'];
+	$pref['eventpost_mailaddress'] = $_POST['eventpost_mailaddress'];
+	$pref['eventpost_asubs'] = $_POST['eventpost_asubs'];
+	$pref['eventpost_emaillog'] = $_POST['eventpost_emaillog'];
+	$pref['eventpost_editmode'] = $_POST['eventpost_editmode'];
+	save_prefs();
+	$e107cache->clear('nq_event_cal');		// Clear cache as well, in case displays changed
+	$message = EC_LAN_75; // "Calendar settings updated.";
+}
+
+// ****************** FORTHCOMING EVENTS ******************
+if (isset($_POST['updateforthcoming']))
+{
+  $pref['eventpost_menuheading'] = $_POST['eventpost_fe_menuheading'];
+  $pref['eventpost_daysforward'] = $_POST['eventpost_fe_daysforward'];
+  $pref['eventpost_numevents'] = $_POST['eventpost_fe_numevents'];
+  $pref['eventpost_checkrecur'] = $_POST['eventpost_fe_checkrecur'];
+  $pref['eventpost_linkheader'] = $_POST['eventpost_fe_linkheader'];
+  $pref['eventpost_fe_set'] =  implode(",", $_POST['fe_eventclass']);
+  $pref['eventpost_fe_hideifnone'] = $_POST['eventpost_fe_hideifnone'];
+  $pref['eventpost_fe_showrecent'] = $_POST['eventpost_fe_showrecent'];
+  $pref['eventpost_showcaticon'] = $_POST['eventpost_showcaticon'];
+  $pref['eventpost_namelink'] = $_POST['eventpost_namelink'];
+  save_prefs();
+  $e107cache->clear('nq_event_cal');		// Clear cache as well, in case displays changed
+  $message = EC_ADLAN_A109; // "Forthcoming Events settings updated.";
+}
+
+if (e_QUERY)
+{
+  $ec_qs = explode(".", e_QUERY);
+}
+
+require_once('ecal_class.php');
+global $ecal_class;
+$ecal_class = new ecal_class;
+
+
+// ****************** MAINTENANCE ******************
+if (isset($_POST['deleteold']) && isset($_POST['eventpost_deleteoldmonths']))
+{
+  $back_count = $_POST['eventpost_deleteoldmonths'];
+  if (($back_count >= 1) && ($back_count <= 12))
+  {
+    $old_date = intval(mktime(0,0,0,$ecal_class->now_date['mon']-$back_count,1,$ecal_class->now_date['year']));
+	$old_string = strftime("%d %B %Y",$old_date);
+//	$message = "Back delete {$back_count} months. Oldest date = {$old_string}";
+	$ec_qs[0] = "confdel";
+	$ec_qs[1] = $old_date;
+  }
+  else
+    $message = EC_ADLAN_A148;
+}
+
+
+if (isset($_POST['cache_clear']))
+{
+  $ec_qs[0] = "confcache";
+}
+
+
+//-------------------------------------------------
+
+require_once(e_ADMIN."auth.php");
+
+if (!defined("USER_WIDTH")){ define("USER_WIDTH","width:auto"); }
+
+
+
+// Actually delete back events
+if (isset($_POST['confirmdeleteold']) && isset($ec_qs[0]) && ($ec_qs[0] == "backdel"))
+{
+  $old_date = $ec_qs[1];
+  $old_string = strftime("%d %B %Y",$old_date);
+	// Check both start and end dates to avoid problems with events originally entered under 0.617
+  $qry = "event_start < {$old_date} AND event_end < {$old_date} AND event_recurring = 0";
+//  $message = "Back delete {$back_count} months. Oldest date = {$old_string}  Query = {$qry}";
+	if ($sql -> db_Delete("event",$qry))
+	{
+  // Add in a log event
+	  $ecal_class->cal_log(4,'db_Delete - earlier than {$old_string} (past {$back_count} months)',$qry);
+      $message = EC_ADLAN_A146.$old_string.EC_ADLAN_A147;
+	}
+	else
+	{
+	  $message = EC_ADLAN_A149." : ".$sql->mySQLresult;
+	}
+
+  $ec_qs[0] = "maint";
+}
+
+
+// Actually empty cache
+if (isset($_POST['confirmdelcache']) && isset($ec_qs[0]) &&($ec_qs[0] == "cachedel"))
+{
+  $e107cache->clear('nq_event_cal');
+  $message = EC_ADLAN_A163;
+  $ec_qs[0] = "maint";			// Re-display maintenance menu
+}
+
+
+// Prompt to delete back events
+if(isset($ec_qs[0]) && ($ec_qs[0] == "confdel"))
+{
+	$old_string = strftime("%d %B %Y",$ec_qs[1]);
+	$text = "<div style='text-align:center'>
+	<form method='post' action='".e_SELF."?backdel.{$ec_qs[1]}'>
+	<table style='width:97%' class='fborder'>
+	<tr>
+		<td class='forumheader3' style='width:100%;vertical-align:top;rext-align:center;'>".EC_ADLAN_A150.$old_string." </td>
+	</tr>
+	<tr><td colspan='2'  style='text-align:center' class='fcaption'><input class='button' type='submit' name='confirmdeleteold' value='".EC_LAN_50."' /></td></tr>
+	</table></form></div>";
+
+	$ns->tablerender("<div style='text-align:center'>".EC_LAN_50."</div>", $text);
+}
+
+
+// Prompt to clear cache
+if (isset($ec_qs[0]) && ($ec_qs[0] == "confcache"))
+{
+	$text = "<div style='text-align:center'>
+	<form method='post' action='".e_SELF."?cachedel'>
+	<table style='width:97%' class='fborder'>
+	<tr>
+		<td class='forumheader3' style='width:100%;vertical-align:top;rext-align:center;'>".EC_ADLAN_A162." </td>
+	</tr>
+	<tr><td colspan='2'  style='text-align:center' class='fcaption'><input class='button' type='submit' name='confirmdelcache' value='".EC_LAN_50."' /></td></tr>
+	</table></form></div>";
+	
+	$ns->tablerender("<div style='text-align:center'>".EC_LAN_50."</div>", $text);
+}
+
+
+// Just delete odd email subscriptions
+if (isset($ec_qs[0]) && isset($ec_qs[2]) && isset($ec_qs[3]) && ($ec_qs[0] == 'subs') && ($ec_qs[2] == 'del') && is_numeric($ec_qs[3]))
+{
+  if ($sql->db_Delete("event_subs","event_subid='{$ec_qs[3]}'"))
+    $message = EC_ADLAN_A180.$ec_qs[3];
+  else
+    $message = EC_ADLAN_A181.$ec_qs[3];
+}
+
+if (isset($message) && ($message != "")) 
+{
+  $ns->tablerender("", "<div style='text-align:center'><b>{$message}</b></div>");
+  $message = "";
+}
+
+
+
+//category
+$ecal_sendemail = 0;
+if(isset($ec_qs[0]) && $ec_qs[0] == "cat")
+{
+// This uses two hidden fields, preset from the category selection menu:
+//	  calendarmenu_action
+//		'update' - to create or update a record (actually save the info)
+//		'dothings' - create/edit/delete just triggered - $calendarmenu_do = $_POST['calendarmenu_recdel']; has action 1, 2, 3
+//    calendarmenu_id - the number of the category - zero indicates a new category
+// We may also have $_POST['send_email_1'] or $_POST['send_email_2'] set to generate a test email as well as doing update/save
+
+	if (is_readable(THEME."ec_mailout_template.php")) 
+	{  // Has to be require
+		require(THEME."ec_mailout_template.php");
+	}
+	else 
+	{
+	  require(e_PLUGIN.'calendar_menu/ec_mailout_template.php');
+	}
+	$calendarmenu_db = new DB;
+	$calendarmenu_action = '';
+	if (isset($_POST['calendarmenu_action'])) $calendarmenu_action = $_POST['calendarmenu_action'];
+	$calendarmenu_edit = FALSE;
+	// * If we are updating then update or insert the record
+	if ($calendarmenu_action == 'update')
+	{
+		$calendarmenu_id = $_POST['calendarmenu_id'];
+		if ($calendarmenu_id == 0)
+		{ 	// New record so add it
+			// Enumerate fields so it doesn't matter if they're in the wrong order.
+			// db_Insert can take an array of key => value pairs
+			$calendarmenu_args = array (
+			'event_cat_id'			=> 0,
 			'event_cat_name'		=> $tp->toDB($_POST['event_cat_name']),
 			'event_cat_description'	=> $tp->toDB($_POST['event_cat_description']),
-			'event_cat_icon'		=> $_POST['ne_new_category_icon'],
-			'event_cat_class'		=> intval($_POST['event_cat_class']),
-			'event_cat_subs'		=> intval($_POST['event_cat_subs']),
-			'event_cat_force_class'	=> intval($_POST['event_cat_force_class']),
-			'event_cat_ahead'		=> intval($_POST['event_cat_ahead']),
+			'event_cat_icon'		=> $_POST['ne_new_category_icon'],
+			'event_cat_class'		=> intval($_POST['event_cat_class']),
+			'event_cat_subs'		=> intval($_POST['event_cat_subs']),
+			'event_cat_force_class'	=> intval($_POST['event_cat_force_class']),
+			'event_cat_ahead'		=> intval($_POST['event_cat_ahead']),
 			'event_cat_msg1'		=> $tp->toDB($_POST['event_cat_msg1']),
 			'event_cat_msg2'		=> $tp->toDB($_POST['event_cat_msg2']),
-			'event_cat_notify'		=> intval($_POST['event_cat_notify']),
-			'event_cat_lastupdate'	=> intval(time()),
-			'event_cat_addclass'	=>  intval($_POST['event_cat_addclass'])
-			);
-
-			if ($calendarmenu_db->db_Insert("event_cat", $calendarmenu_args))
-			{
-			  $calendarmenu_msg .= "<tr><td class='forumheader3' colspan='2'><strong>".EC_ADLAN_A26."</strong></td></tr>";
-			}
-			else
-			{
-			  $calendarmenu_msg .= "<tr><td class='forumheader3' colspan='2'><strong>".EC_ADLAN_A27."</strong></td></tr>";
-			}
-		}
-		else
-		{
-			// Update existing
-			$calendarmenu_args = "
+			'event_cat_notify'		=> intval($_POST['event_cat_notify']),
+			'event_cat_lastupdate'	=> intval(time()),
+			'event_cat_addclass'	=>  intval($_POST['event_cat_addclass'])
+			);
+
+			if ($calendarmenu_db->db_Insert("event_cat", $calendarmenu_args))
+			{
+			  $calendarmenu_msg .= "<tr><td class='forumheader3' colspan='2'><strong>".EC_ADLAN_A26."</strong></td></tr>";
+			}
+			else
+			{
+			  $calendarmenu_msg .= "<tr><td class='forumheader3' colspan='2'><strong>".EC_ADLAN_A27."</strong></td></tr>";
+			}
+		}
+		else
+		{
+			// Update existing
+			$calendarmenu_args = "
 			event_cat_name='".$tp->toDB($_POST['event_cat_name'])."',
 			event_cat_description='".$tp->toDB($_POST['event_cat_description'])."',
-			event_cat_class='".intval($_POST['event_cat_class'])."',
-			event_cat_icon='".$_POST['ne_new_category_icon']."',
-			event_cat_subs='".intval($_POST['event_cat_subs'])."',
-			event_cat_force_class='".intval($_POST['event_cat_force_class'])."',
-			event_cat_ahead='".intval($_POST['event_cat_ahead'])."',
+			event_cat_class='".intval($_POST['event_cat_class'])."',
+			event_cat_icon='".$_POST['ne_new_category_icon']."',
+			event_cat_subs='".intval($_POST['event_cat_subs'])."',
+			event_cat_force_class='".intval($_POST['event_cat_force_class'])."',
+			event_cat_ahead='".intval($_POST['event_cat_ahead'])."',
 			event_cat_msg1='".$tp->toDB($_POST['event_cat_msg1'])."',
 			event_cat_msg2='".$tp->toDB($_POST['event_cat_msg2'])."',
-			event_cat_notify='".intval($_POST['event_cat_notify'])."',
-			event_cat_addclass='".intval($_POST['event_cat_addclass'])."',
-			event_cat_lastupdate='".time()."'
-			where event_cat_id='$calendarmenu_id'";
-			if ($calendarmenu_db->db_Update("event_cat", $calendarmenu_args)){
-				// Changes saved
-				$calendarmenu_msg .= "<tr><td class='forumheader3' colspan='2'><b>".EC_ADLAN_A28."</b></td></tr>";
-			}else{
-				$calendarmenu_msg .= "<tr><td class='forumheader3' colspan='2'><b>".EC_ADLAN_A29."</b></td></tr>";
-			}
-		}
-	}
-	// We are creating, editing or deleting a record
-	if ($calendarmenu_action == 'dothings')
-	{
-		$calendarmenu_id = $_POST['calendarmenu_selcat'];
-		$calendarmenu_do = $_POST['calendarmenu_recdel'];
-		$calendarmenu_dodel = false;
-
-		switch ($calendarmenu_do)
-		{
-			case '1': // Edit existing record
-				{
-					// We edit the record
-					$calendarmenu_db->db_Select("event_cat", "*", "event_cat_id='$calendarmenu_id'");
-					$calendarmenu_row = $calendarmenu_db->db_Fetch() ;
-					extract($calendarmenu_row);
-					$calendarmenu_cap1 = EC_ADLAN_A24;
-					$calendarmenu_edit = TRUE;
-					break;
-				}
-			case '2': // New category
-				{
-					// Create new record
-					$calendarmenu_id = 0;
-					// set all fields to zero/blank
-					$calendar_category_name = "";
-					$calendar_category_description = "";
-					$calendarmenu_cap1 = EC_ADLAN_A23;
-					$calendarmenu_edit = TRUE;
-					break;
-				}
-			case '3':
-				{
-					// delete the record
-					if ($_POST['calendarmenu_okdel'] == '1'){
-						if ($calendarmenu_db->db_Select("event", "event_id", " where event_category='$calendarmenu_id'", "nowhere")){
-							$calendarmenu_msg .= "<tr><td class='forumheader3' colspan='2'><strong>".EC_ADLAN_A59."</strong></td></tr>";
-						}else{
-							if ($calendarmenu_db->db_Delete("event_cat", " event_cat_id='$calendarmenu_id'")){
-								$calendarmenu_msg .= "<tr><td class='forumheader3' colspan='2'><strong>".EC_ADLAN_A30."</strong></td></tr>";
-							}else{
-								$calendarmenu_msg .= "<tr><td class='forumheader3' colspan='2'><strong>".EC_ADLAN_A32."</strong></td></tr>";
-							}
-						}
-					}else{
-						$calendarmenu_msg .= "<tr><td class='forumheader3' colspan='2'><strong>".EC_ADLAN_A31."</strong></td></tr>";
-					}
-					$calendarmenu_dodel = TRUE;
-					$calendarmenu_edit = FALSE;
-				}
-		}
-
-		if (!$calendarmenu_dodel)
-		{
-			require_once(e_HANDLER."file_class.php");
-
-
-			$calendarmenu_text .= "
-			<form id='calformupdate' method='post' action='".e_SELF."?cat'>
-			<table style='width:97%;' class='fborder'>
-			<tr>
-				<td colspan='2' class='fcaption'>{$calendarmenu_cap1}
-					<input type='hidden' value='{$calendarmenu_id}' name='calendarmenu_id' />
-					<input type='hidden' value='update' name='calendarmenu_action' />
-				</td>
-			</tr>
-			{$calendarmenu_msg}
-			<tr>
-				<td style='width:20%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A21."</td>
-				<td class='forumheader3'><input type='text' style='width:150px' class='tbox' name='event_cat_name' value='{$event_cat_name}' /></td>
-			</tr>
-			<tr>
-				<td style='width:20%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A121."</td>
-				<td class='forumheader3'><textarea rows='5' cols='60' class='tbox' name='event_cat_description' >".$event_cat_description."</textarea></td>
-			</tr>
-			<tr>
-				<td style='width:20%' class='forumheader3'>".EC_ADLAN_A80."</td>
-				<td style='width:80%' class='forumheader3'>".r_userclass("event_cat_class", $event_cat_class, "off", 'public, nobody, member, admin, classes')."</td>
-			</tr>
-			<tr>
-				<td style='width:20%' class='forumheader3'>".EC_ADLAN_A94."</td>
-				<td style='width:80%' class='forumheader3'>".r_userclass("event_cat_addclass", $event_cat_addclass, "off", 'public, nobody, member, admin, classes')."</td>
-			</tr>
-			<tr>
-				<td class='forumheader3' style='width:20%'>".EC_LAN_55."</td><td class='forumheader3' >
-					<input class='tbox' style='width:150px' id='caticon' type='text' name='ne_new_category_icon' value='".$event_cat_icon."' />
-					<input class='button' type='button' style='width: 45px; cursor:hand;' value='".EC_LAN_90."' onclick='expandit(\"cat_icons\")' />
-					<div style='display:none' id='cat_icons'>";
-					$fi = new e_file;
-					$imagelist = $fi->get_files(e_PLUGIN."calendar_menu/images", "\.\w{3}$");
-					foreach($imagelist as $img){
-						if ($img['fname']){
-							$calendarmenu_text .= "<a href='javascript:insertext(\"{$img['fname']}\", \"caticon\", \"cat_icons\")'><img src='".e_PLUGIN."calendar_menu/images/".$img['fname']."' style='border:0px' alt='' /></a> ";
-						}
-					}
-					$calendarmenu_text .= "
-					</div>
-				</td>
-			</tr>
-			<tr>
-				<td class='forumheader3' style='width:20%'>".EC_ADLAN_A81."</td>
-				<td class='forumheader3'><input type='checkbox' class='tbox' name='event_cat_subs' value='1' ".($event_cat_subs > 0?"checked='checked'":"")." /></td>
-			</tr>
-			<tr>
-				<td class='forumheader3' style='width:20%'>".EC_ADLAN_A86."</td>
-				<td class='forumheader3'><select class='tbox' name='event_cat_notify'>
-				<option value='0' ".($event_cat_notify == 0?" selected='selected'":"")." >".EC_ADLAN_A87."</option>
-				<option value='1' ".($event_cat_notify == 1?" selected='selected'":"")." >".EC_ADLAN_A88."</option>
-				<option value='2' ".($event_cat_notify == 2?" selected='selected'":"")." >".EC_ADLAN_A89."</option>
-				<option value='3' ".($event_cat_notify == 3?" selected='selected'":"")." >".EC_ADLAN_A90."</option>
-				<option value='4' ".($event_cat_notify == 4?" selected='selected'":"")." >".EC_ADLAN_A110."</option>
-				<option value='5' ".($event_cat_notify == 5?" selected='selected'":"")." >".EC_ADLAN_A111."</option>
-				</select>
-				</td>
-			</tr>
-			<tr>
-				<td style='width:20%' class='forumheader3'>".EC_ADLAN_A82."</td>
-				<td style='width:80%' class='forumheader3'>".r_userclass("event_cat_force_class", $event_cat_force_class, "off", 'nobody, member, admin, classes')."</td>
-			</tr>
-			<tr>
-				<td class='forumheader3' style='width:20%'>".EC_ADLAN_A83."</td>
-				<td class='forumheader3'><input type='text' size='4' maxlength='5' class='tbox' name='event_cat_ahead' value='$event_cat_ahead'  /></td>
-			</tr>
-			<tr>
-				<td class='forumheader3' style='width:20%;vertical-align:top;'>".EC_ADLAN_A84."</td>
-				<td class='forumheader3'><textarea rows='5' cols='80' class='tbox' name='event_cat_msg1' >".$event_cat_msg1."</textarea></td>
-			</tr>
-			<tr>
-				<td class='forumheader3' style='width:20%;vertical-align:top;'>".EC_ADLAN_A117."</td>
-				<td class='forumheader3'><textarea rows='5' cols='80' class='tbox' name='event_cat_msg2' >".$event_cat_msg2."</textarea></td>
-			</tr>
-			<tr><td colspan='2' style='text-align:center' class='fcaption'><input type='submit' name='submits' value='".EC_LAN_77."' class='tbox' /></td></tr>
-			</table>
-			</form>";
-		}
-	}
-	if (!$calendarmenu_edit)
-	{
-		// Get the category names to display in combo box then display actions available
-		$calendarmenu2_db = new DB;
-		$calendarmenu_catopt = '';
-		if (!isset($calendarmenu_id)) $calendarmenu_id = -1;
-		if ($calendarmenu2_db->db_Select("event_cat", "event_cat_id,event_cat_name", " order by event_cat_name", "nowhere"))
-		{
-			while ($row = $calendarmenu2_db->db_Fetch()){
-				//extract($calendarmenu_row);
-				$calendarmenu_catopt .= "<option value='".$row['event_cat_id']."' ".($calendarmenu_id == $row['event_cat_id'] ?" selected='selected'":"")." >".$row['event_cat_name']."</option>";
-			}
-		}
-		else
-		{
-			$calendarmenu_catopt .= "<option value=0'>".EC_ADLAN_A33."</option>";
-		}
-
-		$calendarmenu_text .= "
-		<form id='calform' method='post' action='".e_SELF."?cat'>
-
-		<table width='97%' class='fborder'>
-		<tr>
-			<td colspan='2' class='fcaption'>".EC_ADLAN_A11."<input type='hidden' value='dothings' name='calendarmenu_action' /></td>
-		</tr>
-		{$calendarmenu_msg}
-		<tr>
-			<td style='width:20%' class='forumheader3'>".EC_ADLAN_A11."</td>
-			<td class='forumheader3'><select name='calendarmenu_selcat' class='tbox'>{$calendarmenu_catopt}</select></td>
-		</tr>
-		<tr>
-			<td style='width:20%' class='forumheader3'>".EC_ADLAN_A18."</td>
-			<td class='forumheader3'>
-				<input type='radio' name='calendarmenu_recdel' value='1' checked='checked' /> ".EC_ADLAN_A13."<br />
-				<input type='radio' name='calendarmenu_recdel' value='2' /> ".EC_ADLAN_A14."<br />
-				<input type='radio' name='calendarmenu_recdel' value='3' /> ".EC_ADLAN_A15."
-				<input type='checkbox' name='calendarmenu_okdel' value='1' />".EC_ADLAN_A16."
-			</td>
-		</tr>
-		<tr>
-			<td colspan='2' class='fcaption'><input type='submit' name='submits' value='".EC_ADLAN_A17."' class='tbox' /></td>
-		</tr>
-		</table>
-		</form>";
-	}
-	if(isset($calendarmenu_text))
-	{
-	  $ns->tablerender(EC_ADLAN_A19, $calendarmenu_text);
-	}
-}
-
-// ====================================================
-//			FORTHCOMING EVENTS OPTIONS
-// ====================================================
-
-if((isset($qs[0]) && $qs[0] == "forthcoming"))
-{
-
-if (!isset($pref['eventpost_menuheading'])) $pref['eventpost_menuheading'] = EC_ADLAN_A100;
-if (!isset($pref['eventpost_daysforward'])) $pref['eventpost_daysforward'] = 30;
-if (!isset($pref['eventpost_numevents']))   $pref['eventpost_numevents'] = 3;
-if (!isset($pref['eventpost_checkrecur']))  $pref['eventpost_checkrecur'] = '1';
-if (!isset($pref['eventpost_linkheader']))  $pref['eventpost_linkheader'] = '0';
-if (!isset($pref['eventpost_namelink']))    $pref['eventpost_namelink'] = '1';
-
-	$text = "<div style='text-align:center'>
-	<form method='post' action='".e_SELF."?forthcoming'>
-	<table style='width:97%' class='fborder'>
-	<tr><td style='vertical-align:top;' colspan='2' class='fcaption'>".EC_ADLAN_A100." </td></tr>
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A108."</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='text' name='eventpost_fe_menuheading' size='35' value='".$pref['eventpost_menuheading']."' maxlength='30' />
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A101."</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='text' name='eventpost_fe_daysforward' size='20' value='".$pref['eventpost_daysforward']."' maxlength='10' />
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A102."</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='text' name='eventpost_fe_numevents' size='20' value='".$pref['eventpost_numevents']."' maxlength='10' />
-		</td>
-	</tr>
-
-	<tr>
+			event_cat_notify='".intval($_POST['event_cat_notify'])."',
+			event_cat_addclass='".intval($_POST['event_cat_addclass'])."',
+			event_cat_lastupdate='".time()."'
+			where event_cat_id='$calendarmenu_id'";
+			if ($calendarmenu_db->db_Update("event_cat", $calendarmenu_args))
+			{ 	// Changes saved
+			  $calendarmenu_msg .= "<tr><td class='forumheader3' colspan='2'><b>".EC_ADLAN_A28."</b></td></tr>";
+			}
+			else
+			{
+			  $calendarmenu_msg .= "<tr><td class='forumheader3' colspan='2'><b>".EC_ADLAN_A29."</b></td></tr>";
+			} 
+		}
+		// Now see if we need to send a test email
+	  if (isset($_POST['send_email_1'])) $ecal_send_email = 1;
+	  if (isset($_POST['send_email_2'])) $ecal_send_email = 2;
+	  if ($ecal_send_email != 0)
+	  {
+		$calendarmenu_action = 'dothings';    // This forces us back to category edit screen
+		$_POST['calendarmenu_selcat'] = $calendarmenu_id;   // Record number to use
+		$_POST['calendarmenu_recdel'] = '1';		// This forces re-read of the record
+	  }
+	}
+	
+	
+	// We are creating, editing or deleting a record
+	if ($calendarmenu_action == 'dothings')
+	{
+		$calendarmenu_id = $_POST['calendarmenu_selcat'];
+		$calendarmenu_do = $_POST['calendarmenu_recdel'];
+		$calendarmenu_dodel = false;
+
+		switch ($calendarmenu_do)
+		{
+			case '1': // Edit existing record
+				{
+					// We edit the record
+					$calendarmenu_db->db_Select("event_cat", "*", "event_cat_id='$calendarmenu_id'");
+					$calendarmenu_row = $calendarmenu_db->db_Fetch() ;
+					extract($calendarmenu_row);
+					$calendarmenu_cap1 = EC_ADLAN_A24;
+					$calendarmenu_edit = TRUE;
+					if ($ecal_send_email != 0)
+					{  // Need to send a test email
+					  // First, set up a dummy event
+					  global $thisevent;
+					  $thisevent = array('event_start' => $ecal_class->time_now, 'event_end' => ($ecal_class->time_now)+3600,
+										 'event_title' => "Test event", 'event_details' => EC_ADLAN_A191,
+										 'event_cat_name' => $event_cat_name, 'event_location' => EC_ADLAN_A192,
+										 'event_contact' => USEREMAIL, 
+										 'event_thread' => SITEURL."dodgypage",
+										 'event_id' => '6');
+					
+					// *************** SEND EMAIL HERE **************
+					  require_once(e_PLUGIN."calendar_menu/calendar_shortcodes.php");
+					  require_once(e_HANDLER . "mail.php");
+					  switch ($ecal_send_email)
+					  {
+					    case 1 : $cal_msg = $event_cat_msg1;
+								  break;
+					    case 2 : $cal_msg = $event_cat_msg2;
+								 break;
+					  }
+					  $cal_msg = $tp -> parseTemplate($cal_msg, FALSE, $calendar_shortcodes);
+					  $cal_title = $tp -> parseTemplate($pref['eventpost_mailsubject'], FALSE, $calendar_shortcodes);
+					  $user_email = USEREMAIL;
+					  $user_name  = USERNAME;
+//					  $cal_msg = str_replace("\r","\n",$cal_msg);
+//					  echo $cal_msg."<br /><br />";
+					  $send_result = sendemail($user_email, $cal_title, $cal_msg, $user_name, $pref['eventpost_mailaddress'], $pref['eventpost_mailfrom']); 
+					  if ($send_result)
+					    $calendarmenu_msg .= "<tr><td class='forumheader3' colspan='2'><strong>".EC_ADLAN_A187.$ecal_send_email."</strong></td></tr>";
+					  else
+					    $calendarmenu_msg .= "<tr><td class='forumheader3' colspan='2'><strong>".EC_ADLAN_A188.$ecal_send_email."</strong></td></tr>";
+					}
+					break;
+				}
+			case '2': // New category
+				{
+					// Create new record
+					$calendarmenu_id = 0;
+					// set all fields to zero/blank
+					$calendar_category_name = "";
+					$calendar_category_description = "";
+					$calendarmenu_cap1 = EC_ADLAN_A23;
+					$calendarmenu_edit = TRUE;
+					$event_cat_name = '';		// Define some variables for notice removal
+					$event_cat_description = '';
+					$event_cat_class = e_UC_MEMBER;
+					$event_cat_addclass = e_UC_ADMIN;
+					$event_cat_icon = '';
+					$event_cat_subs = 0;
+					$event_cat_notify = 0;
+					$event_cat_force_class = '';
+					$event_cat_ahead = 5;
+					$event_cat_msg1 = '';
+					$event_cat_msg2 = '';
+					break;
+				}
+			case '3':
+				{ 	// delete the record
+					if ($_POST['calendarmenu_okdel'] == '1')
+					{
+					  if ($calendarmenu_db->db_Select("event", "event_id", " where event_category='{$calendarmenu_id}'", "nowhere"))
+					  {
+						$calendarmenu_msg .= "<tr><td class='forumheader3' colspan='2'><strong>".EC_ADLAN_A59."</strong></td></tr>";
+					  }
+					  else
+					  {
+						if ($calendarmenu_db->db_Delete("event_cat", " event_cat_id='{$calendarmenu_id}'"))
+						{
+						  $calendarmenu_msg .= "<tr><td class='forumheader3' colspan='2'><strong>".EC_ADLAN_A30."</strong></td></tr>";
+						}
+						else
+						{
+						  $calendarmenu_msg .= "<tr><td class='forumheader3' colspan='2'><strong>".EC_ADLAN_A32."</strong></td></tr>";
+						} 
+					  } 
+					}
+					else
+					{
+						$calendarmenu_msg .= "<tr><td class='forumheader3' colspan='2'><strong>".EC_ADLAN_A31."</strong></td></tr>";
+					}
+					$calendarmenu_dodel = TRUE;
+					$calendarmenu_edit = FALSE;
+				}
+		}
+
+		if (!$calendarmenu_dodel)
+		{
+			require_once(e_HANDLER."file_class.php");
+			
+			$calendarmenu_text .= "
+			<form id='calformupdate' method='post' action='".e_SELF."?cat'>
+			<table style='width:97%;' class='fborder'>
+			<tr>
+				<td colspan='2' class='fcaption'>{$calendarmenu_cap1}
+					<input type='hidden' value='{$calendarmenu_id}' name='calendarmenu_id' />
+					<input type='hidden' value='update' name='calendarmenu_action' />
+				</td>
+			</tr>
+			{$calendarmenu_msg}
+			<tr>
+				<td style='width:20%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A21."</td>
+				<td class='forumheader3'><input type='text' style='width:150px' class='tbox' name='event_cat_name' value='{$event_cat_name}' /></td>
+			</tr>
+			<tr>
+				<td style='width:20%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A121."</td>
+				<td class='forumheader3'><textarea rows='5' cols='60' class='tbox' name='event_cat_description' >".$event_cat_description."</textarea></td>
+			</tr>
+			<tr>
+				<td style='width:20%' class='forumheader3'>".EC_ADLAN_A80."</td>
+				<td style='width:80%' class='forumheader3'>".r_userclass("event_cat_class", $event_cat_class, "off", 'public, nobody, member, admin, classes')."</td>
+			</tr>
+			<tr>
+				<td style='width:20%' class='forumheader3'>".EC_ADLAN_A94."</td>
+				<td style='width:80%' class='forumheader3'>".r_userclass("event_cat_addclass", $event_cat_addclass, "off", 'public, nobody, member, admin, classes')."</td>
+			</tr>
+			<tr>
+				<td class='forumheader3' style='width:20%'>".EC_LAN_55."</td><td class='forumheader3' >
+					<input class='tbox' style='width:150px' id='caticon' type='text' name='ne_new_category_icon' value='".$event_cat_icon."' />
+					<input class='button' type='button' style='width: 45px; cursor:hand;' value='".EC_LAN_90."' onclick='expandit(\"cat_icons\")' />
+					<div style='display:none' id='cat_icons'>";
+					$fi = new e_file;
+					$imagelist = $fi->get_files(e_PLUGIN."calendar_menu/images", "\.\w{3}$");
+					foreach($imagelist as $img)
+					{
+						if ($img['fname'])
+						{
+							//$calendarmenu_text .= "<a href='javascript:insertext(\"{$img['fname']}\", \"caticon\", \"cat_icons\")'><img src='".e_PLUGIN_ABS."calendar_menu/images/".$img['fname']."' style='border:0px' alt='' /></a>\n ";
+							$calendarmenu_text .= "<img src='".e_PLUGIN_ABS."calendar_menu/images/".$img['fname']."' onclick='insertext(\"{$img['fname']}\", \"caticon\", \"cat_icons\")' style='border:0px' alt='' />\n ";
+						}
+					}
+					$calendarmenu_text .= "
+					</div>
+				</td>
+			</tr>
+			<tr>
+				<td class='forumheader3' style='width:20%'>".EC_ADLAN_A81."</td>
+				<td class='forumheader3'><input type='checkbox' class='tbox' name='event_cat_subs' value='1' ".($event_cat_subs > 0?"checked='checked'":"")." /></td>
+			</tr>
+			<tr>
+				<td class='forumheader3' style='width:20%'>".EC_ADLAN_A86."</td>
+				<td class='forumheader3'><select class='tbox' name='event_cat_notify'>
+				<option value='0' ".($event_cat_notify == 0?" selected='selected'":"")." >".EC_ADLAN_A87."</option>
+				<option value='1' ".($event_cat_notify == 1?" selected='selected'":"")." >".EC_ADLAN_A88."</option>
+				<option value='2' ".($event_cat_notify == 2?" selected='selected'":"")." >".EC_ADLAN_A89."</option>
+				<option value='3' ".($event_cat_notify == 3?" selected='selected'":"")." >".EC_ADLAN_A90."</option>
+				<option value='4' ".($event_cat_notify == 4?" selected='selected'":"")." >".EC_ADLAN_A110."</option>
+				<option value='5' ".($event_cat_notify == 5?" selected='selected'":"")." >".EC_ADLAN_A111."</option>
+				</select>
+				</td>
+			</tr>
+			<tr>
+				<td style='width:20%' class='forumheader3'>".EC_ADLAN_A82."</td>
+				<td style='width:80%' class='forumheader3'>".r_userclass("event_cat_force_class", $event_cat_force_class, "off", 'nobody, member, admin, classes')."</td>
+			</tr>
+			<tr>
+				<td class='forumheader3' style='width:20%'>".EC_ADLAN_A83."</td>
+				<td class='forumheader3'><input type='text' size='4' maxlength='5' class='tbox' name='event_cat_ahead' value='{$event_cat_ahead}'  /></td>
+			</tr>
+			<tr>
+				<td class='forumheader3' style='width:20%;vertical-align:top;'>".EC_ADLAN_A84;
+		if ($calendarmenu_do == 1) 
+		  $calendarmenu_text .= "<br /><br /><br /><input type='submit' name='send_email_1' value='".EC_ADLAN_A186."' class='tbox' />";
+		$calendarmenu_text .= "</td>
+				<td class='forumheader3'><textarea rows='5' cols='80' class='tbox' name='event_cat_msg1' >".$event_cat_msg1."</textarea>";
+		if ($event_cat_name != EC_DEFAULT_CATEGORY)
+		$calendarmenu_text .= "<br /><span class='smalltext'><em>".EC_ADLAN_A189."</em></span>";
+		$calendarmenu_text .= "
+				</td>
+			</tr>
+			<tr>
+				<td class='forumheader3' style='width:20%;vertical-align:top;'>".EC_ADLAN_A117;
+		if ($calendarmenu_do == 1) 
+		  $calendarmenu_text .= "<br /><br /><br /><input type='submit' name='send_email_2' value='".EC_ADLAN_A186."' class='tbox' />";
+		$calendarmenu_text .= "</td>
+				<td class='forumheader3'><textarea rows='5' cols='80' class='tbox' name='event_cat_msg2' >".$event_cat_msg2."</textarea>";
+		if ($event_cat_name != EC_DEFAULT_CATEGORY)
+		$calendarmenu_text .= "<br /><span class='smalltext'><em>".EC_ADLAN_A189."</em></span>";
+		$calendarmenu_text .= "
+				</td>
+			</tr>
+			<tr><td colspan='2' style='text-align:center' class='fcaption'><input type='submit' name='submits' value='".EC_LAN_77."' class='button' /></td></tr>
+			</table>
+			</form>";
+		}
+	}
+	if (!$calendarmenu_edit)
+	{
+		// Get the category names to display in combo box then display actions available
+		$calendarmenu2_db = new DB;
+		$calendarmenu_catopt = '';
+		if (!isset($calendarmenu_id)) $calendarmenu_id = -1;
+		if ($calendarmenu2_db->db_Select("event_cat", "event_cat_id,event_cat_name", " order by event_cat_name", "nowhere"))
+		{
+			while ($row = $calendarmenu2_db->db_Fetch()){
+				//extract($calendarmenu_row);
+				$calendarmenu_catopt .= "<option value='".$row['event_cat_id']."' ".($calendarmenu_id == $row['event_cat_id'] ?" selected='selected'":"")." >".$row['event_cat_name']."</option>";
+			}
+		}
+		else
+		{
+			$calendarmenu_catopt .= "<option value=0'>".EC_ADLAN_A33."</option>";
+		}
+
+		$calendarmenu_text .= "
+		<form id='calform' method='post' action='".e_SELF."?cat'>
+
+		<table width='97%' class='fborder'>
+		<tr>
+			<td colspan='2' class='fcaption'>".EC_ADLAN_A11."<input type='hidden' value='dothings' name='calendarmenu_action' /></td>
+		</tr>
+		{$calendarmenu_msg}
+		<tr>
+			<td style='width:20%' class='forumheader3'>".EC_ADLAN_A11."</td>
+			<td class='forumheader3'><select name='calendarmenu_selcat' class='tbox'>{$calendarmenu_catopt}</select></td>
+		</tr>
+		<tr>
+			<td style='width:20%' class='forumheader3'>".EC_ADLAN_A18."</td>
+			<td class='forumheader3'>
+				<input type='radio' name='calendarmenu_recdel' value='1' checked='checked' /> ".EC_ADLAN_A13."<br />
+				<input type='radio' name='calendarmenu_recdel' value='2' /> ".EC_ADLAN_A14."<br />
+				<input type='radio' name='calendarmenu_recdel' value='3' /> ".EC_ADLAN_A15."
+				<input type='checkbox' name='calendarmenu_okdel' value='1' />".EC_ADLAN_A16."
+			</td>
+		</tr>
+		<tr>
+			<td colspan='2' class='fcaption'><input type='submit' name='submits' value='".EC_ADLAN_A17."' class='tbox' /></td>
+		</tr>
+		</table>
+		</form>";
+	}
+	if(isset($calendarmenu_text))
+	{
+	  $ns->tablerender("<div style='text-align:center'>".EC_ADLAN_1." - ".EC_ADLAN_A19."</div>", $calendarmenu_text);
+	}
+}
+
+// ====================================================
+//			FORTHCOMING EVENTS OPTIONS
+// ====================================================
+
+if((isset($ec_qs[0]) && $ec_qs[0] == "forthcoming"))
+{
+
+if (!isset($pref['eventpost_menuheading'])) $pref['eventpost_menuheading'] = EC_ADLAN_A100;
+if (!isset($pref['eventpost_daysforward'])) $pref['eventpost_daysforward'] = 30;
+if (!isset($pref['eventpost_numevents']))   $pref['eventpost_numevents'] = 3;
+if (!isset($pref['eventpost_checkrecur']))  $pref['eventpost_checkrecur'] = '1';
+if (!isset($pref['eventpost_linkheader']))  $pref['eventpost_linkheader'] = '0';
+if (!isset($pref['eventpost_namelink']))    $pref['eventpost_namelink'] = '1';
+
+	$text = "<div style='text-align:center'>
+	<form method='post' action='".e_SELF."?forthcoming'>
+	<table style='width:97%' class='fborder'>
+	<tr><td style='vertical-align:top;' colspan='2' class='fcaption'>".EC_ADLAN_A100." </td></tr>
+	<tr>
+		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A108."</td>
+		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='text' name='eventpost_fe_menuheading' size='35' value='".$pref['eventpost_menuheading']."' maxlength='30' />
+		</td>
+	</tr>
+
+	<tr>
+		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A101."</td>
+		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='text' name='eventpost_fe_daysforward' size='20' value='".$pref['eventpost_daysforward']."' maxlength='10' />
+		</td>
+	</tr>
+
+	<tr>
+		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A102."</td>
+		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='text' name='eventpost_fe_numevents' size='20' value='".$pref['eventpost_numevents']."' maxlength='10' />
+		</td>
+	</tr>
+
+	<tr>
 		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A103."<br /><span class='smalltext'><em>".EC_ADLAN_A107."</em></span></td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='checkbox' name='eventpost_fe_checkrecur' value='1' ".($pref['eventpost_checkrecur']==1?" checked='checked' ":"")." /></td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A130."<br /></td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'>
-			<select name='eventpost_namelink' class='tbox'>
-			<option value='1' ".($pref['eventpost_namelink']=='1'?" selected='selected' ":"")." > ".EC_ADLAN_A131." </option>
-			<option value='2' ".($pref['eventpost_namelink']=='2'?" selected='selected' ":"")." > ".EC_ADLAN_A132." </option>
-			</select>
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A104."</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='checkbox' name='eventpost_fe_linkheader' value='1' ".($pref['eventpost_linkheader']==1?" checked='checked' ":"")." />
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A120."</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='checkbox' name='eventpost_showcaticon' value='1' ".($pref['eventpost_showcaticon']==1?" checked='checked' ":"")." />
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A118."</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'>";
-
-// Now display all the current categories as checkboxes
-	$cal_fe_prefs = array();
-    if (isset($pref['eventpost_fe_set'])) $cal_fe_prefs = array_flip(explode(",",$pref['eventpost_fe_set']));
-	if (!is_object($calendarmenu2_db)) $calendarmenu2_db = new DB;		// Possible notice here
-	if ($calendarmenu2_db->db_Select("event_cat", "event_cat_id,event_cat_name", " order by event_cat_name", "nowhere"))
-	{
-	  while ($row = $calendarmenu2_db->db_Fetch())
-	  {
-	    $selected = isset($cal_fe_prefs[$row['event_cat_id']]);
-		$text .= "<input type='checkbox' name='fe_eventclass[]' value='".$row['event_cat_id'].($selected == 1?"' checked='checked'":"'")." />".$row['event_cat_name']."<br /> ";
-	  }
-	}
-	else
-	{
-	  $text .= EC_ADLAN_A119;		// No categories, or error
-	}
-
-	$text .= "</td>
-	</tr>
-
-	<tr><td colspan='2'  style='text-align:center' class='fcaption'><input class='button' type='submit' name='updateforthcoming' value='".EC_LAN_77."' /></td></tr>
-	</table>
-	</form>
-	</div>";
-
-	$ns->tablerender("<div style='text-align:center'>".EC_ADLAN_A100."</div>", $text);
-}   // End of Forthcoming Events Menu Options
-
-
-// ====================================================
-//			MAINTENANCE OPTIONS
-// ====================================================
-
-if((isset($qs[0]) && $qs[0] == "maint"))
-{
-	$text = "<div style='text-align:center'>
-	<form method='post' action='".e_SELF."?maint'>
-	<table style='width:97%' class='fborder'>
-	<tr><td style='vertical-align:top;' colspan='2' class='fcaption'>".EC_ADLAN_A144." </td></tr>
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A142." </td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'>
-			<select name='eventpost_deleteoldmonths' class='tbox'>
-			<option value='12' selected='selected'>12</option>
-			<option value='11'>11</option>
-			<option value='10'>10</option>
-			<option value='9'>9</option>
-			<option value='8'>8</option>
-			<option value='7'>7</option>
-			<option value='6'>6</option>
-			<option value='5'>5</option>
-			<option value='4'>4</option>
-			<option value='3'>3</option>
-			<option value='2'>2</option>
-			<option value='1'>1</option>
-			</select>
-			<span class='smalltext'><em>".EC_ADLAN_A143."</em></span>
-		</td>
-	</tr>
-	<tr><td colspan='2'  style='text-align:center' class='fcaption'><input class='button' type='submit' name='deleteold' value='".EC_ADLAN_A145."' /></td></tr>
-	</table></form></div><br /><br />";
-
-	$ns->tablerender("<div style='text-align:center'>".EC_ADLAN_A144."</div>", $text);
-
-	$text = "<div style='text-align:center'>
-	<form method='post' action='".e_SELF."?maint'>
-	<table style='width:97%' class='fborder'>
-	<tr><td style='vertical-align:top; text-align:center;' colspan='2' class='smalltext'><em>".EC_ADLAN_A160."</em> </td></tr>
-	<tr><td colspan='2'  style='text-align:center' class='fcaption'><input class='button' type='submit' name='cache_clear' value='".EC_ADLAN_A161."' /></td></tr>
-	</table></form></div>";
-
-	$ns->tablerender("<div style='text-align:center'>".EC_ADLAN_A159."</div>", $text);
-
-}
-
-// ========================================================
-//				MAIN OPTIONS MENU
-// ========================================================
-
-
-if(!isset($qs[0]) || (isset($qs[0]) && $qs[0] == "config")){
-	$text = "<div style='text-align:center'>
-	<form method='post' action='".e_SELF."'>
-	<table style='width:97%' class='fborder'>
-	<tr><td style='vertical-align:top;' colspan='2' class='fcaption'>".EC_LAN_78." </td></tr>
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_LAN_76." </td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'>". r_userclass("eventpost_admin", $pref['eventpost_admin'], "off", 'public, nobody, member, admin, classes')."
-		</td>
-	</tr>
-	";
-$text .= "
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_LAN_104." </td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'>". r_userclass("eventpost_super", $pref['eventpost_super'], "off",  'public, nobody, member, admin, classes')."
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A134."</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'>
-			<select name='eventpost_adminlog' class='tbox'>
-			<option value='0' ".($pref['eventpost_adminlog']=='0'?" selected='selected' ":"")." >". EC_ADLAN_A87." </option>
-			<option value='1' ".($pref['eventpost_adminlog']=='1'?" selected='selected' ":"")." >".EC_ADLAN_A135." </option>
-			<option value='2' ".($pref['eventpost_adminlog']=='2'?" selected='selected' ":"")." >".EC_ADLAN_A136." </option>
-			</select>
-			<span class='smalltext'><em>".EC_ADLAN_A137."</em></span>
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A165."</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'>
-			<select name='eventpost_menulink' class='tbox'>
-			<option value='0' ".($pref['eventpost_menulink']=='0'?" selected='selected' ":"")." >".EC_LAN_80." </option>
-			<option value='1' ".($pref['eventpost_menulink']=='1'?" selected='selected' ":"")." >".EC_LAN_83." </option>
-			</select>
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A140."</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='checkbox' name='eventpost_showeventcount' value='1' ".($pref['eventpost_showeventcount']==1?" checked='checked' ":"")." /></td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_LAN_102."</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='checkbox' name='eventpost_forum' value='1' ".($pref['eventpost_forum']==1?" checked='checked' ":"")." /></td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A171."</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='text' name='eventpost_recentshow' size='10' value='".$pref['eventpost_recentshow']."' maxlength='5' />
-		<span class='smalltext'><em>".EC_ADLAN_A172."</em></span>
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_LAN_114."</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'>
-			<select name='eventpost_weekstart' class='tbox'>
-			<option value='sun' ".($pref['eventpost_weekstart']=='sun'?" selected='selected' ":"")." >".EC_LAN_115."</option>
-			<option value='mon' ".($pref['eventpost_weekstart']=='mon'?" selected='selected' ":"")." >".EC_LAN_116."</option>
-			</select>
-		</td>
-	</tr>
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_LAN_117."<br /></td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'>
-			<select name='eventpost_lenday' class='tbox'>
-			<option value='1' ".($pref['eventpost_lenday']=='1'?" selected='selected' ":"")." > 1 </option>
-			<option value='2' ".($pref['eventpost_lenday']=='2'?" selected='selected' ":"")." > 2 </option>
-			<option value='3' ".($pref['eventpost_lenday']=='3'?" selected='selected' ":"")." > 3 </option>
-			</select>
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_LAN_118."<br /></td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'>
-			<select name='eventpost_dateformat' class='tbox'>
-			<option value='my' ".($pref['eventpost_dateformat']=='my'?" selected='selected' ":"")." >".EC_LAN_119."</option>
-			<option value='ym' ".($pref['eventpost_dateformat']=='ym'?" selected='selected' ":"")." >".EC_LAN_120."</option>
-			</select>
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A133."<br /></td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'>
-			<select name='eventpost_datedisplay' class='tbox'>
-			<option value='1' ".($pref['eventpost_datedisplay']=='1'?" selected='selected' ":"")." > yyyy-mm-dd </option>
-			<option value='2' ".($pref['eventpost_datedisplay']=='2'?" selected='selected' ":"")." > dd-mm-yyyy</option>
-			<option value='3' ".($pref['eventpost_datedisplay']=='3'?" selected='selected' ":"")." > mm-dd-yyyy</option>
-			</select>
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A138."</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='checkbox' name='eventpost_fivemins' value='1' ".($pref['eventpost_fivemins']==1?" checked='checked' ":"")." />&nbsp;&nbsp;<span class='smalltext'><em>".EC_ADLAN_A139."</em></span>
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A122."<br />
-		<span class='smalltext'><em>".EC_ADLAN_A124."</em></span>".$ecal_class->time_string($ecal_class->time_now)."<br />
-		<span class='smalltext'><em>".EC_ADLAN_A125."</em></span>".$ecal_class->time_string($ecal_class->site_timedate)."<br />
-		<span class='smalltext'><em>".EC_ADLAN_A126."</em></span>".$ecal_class->time_string($ecal_class->user_timedate)."
-		</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'>
-			<select name='eventpost_caltime' class='tbox'>
-			<option value='1' ".($pref['eventpost_caltime']=='1'?" selected='selected' ":"")." > Server </option>
-			<option value='2' ".($pref['eventpost_caltime']=='2'?" selected='selected' ":"")." > Site </option>
-			<option value='3' ".($pref['eventpost_caltime']=='3'?" selected='selected' ":"")." > User </option>
-			</select><br /><span class='smalltext'><em>".EC_ADLAN_A129."</em></span>
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A123."<br />
-		<span class='smalltext'><em>".EC_ADLAN_A127."</em></span>
-		</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'>
-			<select name='eventpost_timedisplay' class='tbox'>
-			<option value='1' ".($pref['eventpost_timedisplay']=='1'?" selected='selected' ":"")." > 24-hour </option>
-			<option value='2' ".($pref['eventpost_timedisplay']=='2'?" selected='selected' ":"")." > 12-hour </option>
-			<option value='3' ".($pref['eventpost_timedisplay']=='3'?" selected='selected' ":"")." > Custom </option>
-			</select>
-            <input class='tbox' type='text' name='eventpost_timecustom' size='20' value='".$pref['eventpost_timecustom']."' maxlength='30' />
-			<br /><span class='smalltext'><em>".EC_ADLAN_A128."</em></span>
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A166."<br />
-		<span class='smalltext'><em>".EC_ADLAN_A169."</em></span>
-		</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'>
-			<select name='eventpost_dateevent' class='tbox'>
-			<option value='1' ".($pref['eventpost_dateevent']=='1'?" selected='selected' ":"")." > dayofweek day month yyyy </option>
-			<option value='2' ".($pref['eventpost_dateevent']=='2'?" selected='selected' ":"")." > dyofwk day mon yyyy </option>
-			<option value='3' ".($pref['eventpost_dateevent']=='3'?" selected='selected' ":"")." > dyofwk dd-mm-yy </option>
-			<option value='0' ".($pref['eventpost_dateevent']=='0'?" selected='selected' ":"")." > Custom </option>
-			</select>
-            <input class='tbox' type='text' name='eventpost_eventdatecustom' size='20' value='".$pref['eventpost_eventdatecustom']."' maxlength='30' />
-			<br /><span class='smalltext'><em>".EC_ADLAN_A168."</em></span>
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A167."<br />
-		<span class='smalltext'><em>".EC_ADLAN_A170."</em></span>
-		</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'>
-			<select name='eventpost_datenext' class='tbox'>
-			<option value='1' ".($pref['eventpost_datenext']=='1'?" selected='selected' ":"")." > dd month </option>
-			<option value='2' ".($pref['eventpost_datenext']=='2'?" selected='selected' ":"")." > dd mon </option>
-			<option value='3' ".($pref['eventpost_datenext']=='3'?" selected='selected' ":"")." > month dd </option>
-			<option value='4' ".($pref['eventpost_datenext']=='4'?" selected='selected' ":"")." > mon dd </option>
-			<option value='0' ".($pref['eventpost_datenext']=='0'?" selected='selected' ":"")." > Custom </option>
-			</select>
-            <input class='tbox' type='text' name='eventpost_nextdatecustom' size='20' value='".$pref['eventpost_nextdatecustom']."' maxlength='30' />
-			<br /><span class='smalltext'><em>".EC_ADLAN_A168."</em></span>
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A95."</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='checkbox' name='eventpost_asubs' value='1' ".($pref['eventpost_asubs']==1?" checked='checked' ":"")." />&nbsp;&nbsp;<span class='smalltext'><em>".EC_ADLAN_A96."</em></span>
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A92."</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='text' name='eventpost_mailfrom' size='60' value='".$pref['eventpost_mailfrom']."' maxlength='100' />
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A91."</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='text' name='eventpost_mailsubject' size='60' value='".$pref['eventpost_mailsubject']."' maxlength='100' />
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A93."</td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='text' name='eventpost_mailaddress' size='60' value='".$pref['eventpost_mailaddress']."' maxlength='100' />
-		</td>
-	</tr>
-
-	<tr>
-		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A114."<br /></td>
-		<td style='width:60%;vertical-align:top;' class='forumheader3'>
-			<select name='eventpost_emaillog' class='tbox'>
-			<option value='0' ".($pref['eventpost_emaillog']=='0'?" selected='selected' ":"")." >". EC_ADLAN_A87." </option>
-			<option value='1' ".($pref['eventpost_emaillog']=='1'?" selected='selected' ":"")." >".EC_ADLAN_A115."  </option>
-			<option value='2' ".($pref['eventpost_emaillog']=='2'?" selected='selected' ":"")." >".EC_ADLAN_A116." </option>
-			</select>
-		</td>
-	</tr>
-
-	<tr><td colspan='2'  style='text-align:center' class='fcaption'><input class='button' type='submit' name='updatesettings' value='".EC_LAN_77."' /></td></tr>
-	</table>
-	</form>
-	</div>";
-
-	$ns->tablerender("<div style='text-align:center'>".EC_LAN_78."</div>", $text);
-}
-
-
-function admin_config_adminmenu()
-{
-		if (e_QUERY) {
-			$tmp = explode(".", e_QUERY);
-			$action = $tmp[0];
-		}
-		if (!isset($action) || ($action == ""))
-		{
-		  $action = "config";
-		}
-		$var['config']['text'] = EC_ADLAN_A10;
-		$var['config']['link'] = "admin_config.php";
-
-		$var['cat']['text'] = EC_ADLAN_A11;
-		$var['cat']['link'] ="admin_config.php?cat";
-
-		$var['forthcoming']['text'] = EC_ADLAN_A100;
-		$var['forthcoming']['link'] ="admin_config.php?forthcoming";
-
-		$var['maint']['text'] = EC_ADLAN_A141;
-		$var['maint']['link'] ="admin_config.php?maint";
-
-		show_admin_menu(EC_ADLAN_A12, $action, $var);
-}
-
-
-require_once(e_ADMIN."footer.php");
-
+		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='checkbox' name='eventpost_fe_checkrecur' value='1' ".($pref['eventpost_checkrecur']==1?" checked='checked' ":"")." /></td>
+	</tr>
+
+	<tr>
+		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A107."</td>
+		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='checkbox' name='eventpost_fe_hideifnone' value='1' ".($pref['eventpost_fe_hideifnone']==1?" checked='checked' ":"")." /></td>
+	</tr>
+
+	<tr>
+		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A199."</td>
+		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='checkbox' name='eventpost_fe_showrecent' value='1' ".($pref['eventpost_fe_showrecent']==1?" checked='checked' ":"")." /></td>
+	</tr>
+
+	<tr>
+		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A130."<br /></td>
+		<td style='width:60%;vertical-align:top;' class='forumheader3'>
+			<select name='eventpost_namelink' class='tbox'>
+			<option value='1' ".($pref['eventpost_namelink']=='1'?" selected='selected' ":"")." > ".EC_ADLAN_A131." </option>
+			<option value='2' ".($pref['eventpost_namelink']=='2'?" selected='selected' ":"")." > ".EC_ADLAN_A132." </option>
+			</select>
+		</td>
+	</tr>
+
+	<tr>
+		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A104."</td>
+		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='checkbox' name='eventpost_fe_linkheader' value='1' ".($pref['eventpost_linkheader']==1?" checked='checked' ":"")." />
+		</td>
+	</tr>
+
+	<tr>
+		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A120."</td>
+		<td style='width:60%;vertical-align:top;' class='forumheader3'><input class='tbox' type='checkbox' name='eventpost_showcaticon' value='1' ".($pref['eventpost_showcaticon']==1?" checked='checked' ":"")." />
+		</td>
+	</tr>
+
+	<tr>
+		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A118."</td>
+		<td style='width:60%;vertical-align:top;' class='forumheader3'>";
+
+// Now display all the current categories as checkboxes
+	$cal_fe_prefs = array();
+    if (isset($pref['eventpost_fe_set'])) $cal_fe_prefs = array_flip(explode(",",$pref['eventpost_fe_set']));
+	if (!isset($calendarmenu2_db) || !is_object($calendarmenu2_db)) $calendarmenu2_db = new DB;		// Possible notice here
+	if ($calendarmenu2_db->db_Select("event_cat", "event_cat_id,event_cat_name", " WHERE (event_cat_name != '".EC_DEFAULT_CATEGORY."') order by event_cat_name", "nowhere"))
+	{
+	  while ($row = $calendarmenu2_db->db_Fetch())
+	  {
+	    $selected = isset($cal_fe_prefs[$row['event_cat_id']]);
+		$text .= "<input type='checkbox' name='fe_eventclass[]' value='".$row['event_cat_id'].($selected == 1?"' checked='checked'":"'")." />".$row['event_cat_name']."<br /> ";
+	  }
+	}
+	else
+	{
+	  $text .= EC_ADLAN_A119;		// No categories, or error
+	}
+  
+	$text .= "</td>
+	</tr>
+	
+	<tr><td colspan='2'  style='text-align:center' class='fcaption'><input class='button' type='submit' name='updateforthcoming' value='".EC_LAN_77."' /></td></tr>
+	</table>
+	</form>
+	</div>";
+
+	$ns->tablerender("<div style='text-align:center'>".EC_ADLAN_1." - ".EC_ADLAN_A100."</div>", $text);
+}   // End of Forthcoming Events Menu Options
+
+
+// ====================================================
+//			MAINTENANCE OPTIONS
+// ====================================================
+
+if((isset($ec_qs[0]) && $ec_qs[0] == "maint"))
+{
+	$text = "<div style='text-align:center'>
+	<form method='post' action='".e_SELF."?maint'>
+	<table style='width:97%' class='fborder'>
+	<tr><td style='vertical-align:top;' colspan='2' class='fcaption'>".EC_ADLAN_A144." </td></tr>
+	<tr>
+		<td style='width:40%;vertical-align:top;' class='forumheader3'>".EC_ADLAN_A142." </td>
+		<td style='width:60%;vertical-align:top;' class='forumheader3'>
+			<select name='eventpost_deleteoldmonths' class='tbox'>
+			<option value='12' selected='selected'>12</option>
+			<option value='11'>11</option>
+			<option value='10'>10</option>
+			<option value='9'>9</option>
+			<option value='8'>8</option>
+			<option value='7'>7</option>
+			<option value='6'>6</option>
+			<option value='5'>5</option>
+			<option value='4'>4</option>
+			<option value='3'>3</option>
+			<option value='2'>2</option>
+			<option value='1'>1</option>
+			</select>
+			<span class='smalltext'><em>".EC_ADLAN_A143."</em></span>
+		</td>
+	</tr>
+	<tr><td colspan='2'  style='text-align:center' class='fcaption'><input class='button' type='submit' name='deleteold' value='".EC_ADLAN_A145."' /></td></tr>
+	</table></form></div><br /><br />";
+
+	$ns->tablerender("<div style='text-align:center'>".EC_ADLAN_1." - ".EC_ADLAN_A141."</div>", $text);
+
+	$text = "<div style='text-align:center'>
+	<form method='post' action='".e_SELF."?maint'>
+	<table style='width:97%' class='fborder'>
+	<tr><td style='vertical-align:top; text-align:center;' colspan='2' class='smalltext'><em>".EC_ADLAN_A160."</em> </td></tr>
+	<tr><td colspan='2'  style='text-align:center' class='fcaption'><input class='button' type='submit' name='cache_clear' value='".EC_ADLAN_A161."' /></td></tr>
+	</table></form></div>";
+
+	$ns->tablerender("<div style='text-align:center'>".EC_ADLAN_1." - ".EC_ADLAN_A159."</div>", $text);
+
+}
+
+// ====================================================
+//			SUBSCRIPTIONS OPTIONS
+// ====================================================
+
+if((isset($ec_qs[0]) && $ec_qs[0] == "subs"))
+{
+  $from = 0;
+  $amount = 20;		// Number per page - could make configurable later if required
+  if (isset($ec_qs[1])) $from = $ec_qs[1];
+
+  $num_entry = $sql->db_Count("event_subs", "(*)", "");		// Just count the lot
+   
+  $qry = "SELECT es.*, u.user_id, u.user_name, u.user_class, ec.event_cat_id, ec.event_cat_name, ec.event_cat_class FROM #event_subs AS es 
+                     LEFT JOIN #user AS u ON es.event_userid = u.user_id
+					 LEFT JOIN #event_cat AS ec ON es.event_cat = ec.event_cat_id
+					 ORDER BY u.user_id
+					 LIMIT {$from}, {$amount} ";
+
+	$text = "<div style='text-align:center'>
+	<form method='post' action='".e_SELF."?subs.".$from."'>
+	<table style='".USER_WIDTH."' class='fborder'>
+	<colgroup>
+	<col style='width:10%; vertical-align:top;' />
+	<col style='width:20%; vertical-align:top;' />
+	<col style='width:30%; vertical-align:top;' />
+	<col style='width:30%; vertical-align:top;' />
+	<col style='width:10%; vertical-align:top;' />
+	</colgroup>";
+	
+  	if (!$sql->db_Select_gen($qry))
+	{
+	  $text .= "<tr><td colspan='5' class='forumheader'>".EC_ADLAN_A174."</td></tr>";
+	  $num_entry = 0;
+	}
+	else
+	{
+	  $text .= "<tr><td class='forumheader'>".EC_ADLAN_A175."</td><td class='forumheader'>".EC_ADLAN_A176."</td>
+	  <td class='forumheader'>".EC_ADLAN_A177."</td><td class='forumheader'>".EC_ADLAN_A178."</td><td class='forumheader'>".EC_ADLAN_A179."</td></tr>";
+	  while ($row = $sql->db_Fetch())
+	  {
+  // Columns - UID, User name, Category name, Action
+        $problems = "";
+		if (!isset($row['user_id']) || ($row['user_id'] == 0) || (!isset($row['user_name'])) || ($row['user_name'] == ""))
+		  $problems = EC_ADLAN_A198;
+		if (!check_class($row['event_cat_class'],$row['user_class']))
+		{
+		  if ($problems != "") $problems .= "<br />";
+		  $problems .= EC_ADLAN_A197;
+		}
+	$text .= "
+	<tr>
+	<td class='forumheader3'>".$row['user_id']."</td>
+	<td class='forumheader3'>".$row['user_name']."</td>
+	<td class='forumheader3'>".$row['event_cat_name']."</td>
+	<td class='forumheader3'>".$problems."</td>
+	<td class='forumheader3' style='text_align:center'><a href='".e_SELF."?".$ec_qs[0].".".$from.".del.".$row['event_subid']."'>
+	  <img src='".e_IMAGE."admin_images/delete_16.png' alt='".LAN_DELETE."' title='".LAN_DELETE."' /></a></td>
+	</tr>";
+	  }  // End while
+	
+// Next-Previous. ==========================
+	  if ($num_entry > $amount) 
+	  {
+	    $parms = "{$num_entry},{$amount},{$from},".e_SELF."?".$ec_qs[0].".[FROM]";
+	    $text .= "<br />".$tp->parseTemplate("{NEXTPREV={$parms}}");
+	  }
+	}
+	$text .= "</table></form></div>";
+
+	$text .= "&nbsp;&nbsp;&nbsp;".str_replace("--NUM--", $num_entry, EC_ADLAN_A182);
+	
+	$ns->tablerender("<div style='text-align:center'>".EC_ADLAN_1." - ".EC_ADLAN_A173."</div>", $text);
+}
+// ========================================================
+//				MAIN OPTIONS MENU
+// ========================================================
+
+
+if(!isset($ec_qs[0]) || (isset($ec_qs[0]) && $ec_qs[0] == "config"))
+{
+  function select_day_start($val)
+  {
+    if ($val == 'sun') $val = 0; elseif ($val == 'mon') $val = 1;	// Legacy values
+    $ret = "<select name='eventpost_weekstart' class='tbox'>\n";
+	foreach (array(EC_LAN_18,EC_LAN_12,EC_LAN_13,EC_LAN_14,EC_LAN_15,EC_LAN_16,EC_LAN_17) as $k => $v)
+	{
+	  $sel = ($val == $k) ? " selected='selected'" : "";
+	  $ret .= "<option value='{$k}'{$sel}>{$v}</option>\n";
+	}
+	$ret .= "</select>\n";
+	return $ret;
+  }
+
+
+	$text = "<div style='text-align:center'>
+	<form method='post' action='".e_SELF."'>
+	<table style='width:97%' class='fborder'><colgroup>
+	<col style='width:40%;vertical-align:top;' /><col style='width:60%;vertical-align:top;' /></colgroup>
+	<tr><td style='vertical-align:top;' colspan='2' class='fcaption'>".EC_LAN_78." </td></tr>
+	<tr>
+		<td class='forumheader3'>".EC_LAN_76." </td>
+		<td class='forumheader3'>". r_userclass("eventpost_admin", $pref['eventpost_admin'], "off", 'public, nobody, member, admin, classes')."
+		</td>
+	</tr>
+	";
+$text .= "
+	<tr>
+		<td class='forumheader3'>".EC_LAN_104." </td>
+		<td class='forumheader3'>". r_userclass("eventpost_super", $pref['eventpost_super'], "off",  'public, nobody, member, admin, classes')."
+		</td>
+	</tr>
+
+	<tr>
+		<td class='forumheader3'>".EC_ADLAN_A134."</td>
+		<td class='forumheader3'>
+			<select name='eventpost_adminlog' class='tbox'>
+			<option value='0' ".($pref['eventpost_adminlog']=='0'?" selected='selected' ":"")." >". EC_ADLAN_A87." </option>
+			<option value='1' ".($pref['eventpost_adminlog']=='1'?" selected='selected' ":"")." >".EC_ADLAN_A135." </option>
+			<option value='2' ".($pref['eventpost_adminlog']=='2'?" selected='selected' ":"")." >".EC_ADLAN_A136." </option>
+			</select>
+			<span class='smalltext'><em>".EC_ADLAN_A137."</em></span>
+		</td>
+	</tr>
+
+	<tr>
+		<td class='forumheader3'>".EC_ADLAN_A165."</td>
+		<td class='forumheader3'>
+			<select name='eventpost_menulink' class='tbox'>
+			<option value='0' ".($pref['eventpost_menulink']=='0'?" selected='selected' ":"")." >".EC_LAN_80." </option>
+			<option value='1' ".($pref['eventpost_menulink']=='1'?" selected='selected' ":"")." >".EC_LAN_83." </option>
+			<option value='2' ".($pref['eventpost_menulink']=='2'?" selected='selected' ":"")." >".EC_ADLAN_A185." </option>
+			</select>
+		</td>
+	</tr>
+
+	<tr>
+		<td class='forumheader3'>".EC_ADLAN_A183."</td>
+		<td class='forumheader3'><input class='tbox' type='checkbox' name='eventpost_showmouseover' value='1' ".($pref['eventpost_showmouseover']==1?" checked='checked' ":"")." />
+		<span class='smalltext'><em>".EC_ADLAN_A184."</em></span></td>
+	</tr>
+
+	<tr>
+		<td class='forumheader3'>".EC_ADLAN_A140."</td>
+		<td class='forumheader3'><input class='tbox' type='checkbox' name='eventpost_showeventcount' value='1' ".($pref['eventpost_showeventcount']==1?" checked='checked' ":"")." /></td>
+	</tr>
+
+	<tr>
+		<td class='forumheader3'>".EC_LAN_102."</td>
+		<td class='forumheader3'><input class='tbox' type='checkbox' name='eventpost_forum' value='1' ".($pref['eventpost_forum']==1?" checked='checked' ":"")." /></td>
+	</tr>
+
+	<tr>
+		<td class='forumheader3'>".EC_ADLAN_A171."</td>
+		<td class='forumheader3'><input class='tbox' type='text' name='eventpost_recentshow' size='10' value='".$pref['eventpost_recentshow']."' maxlength='5' />
+		<span class='smalltext'><em>".EC_ADLAN_A172."</em></span>
+		</td>
+	</tr>
+
+	<tr>
+		<td class='forumheader3'>".EC_LAN_114."</td>
+		<td class='forumheader3'>".select_day_start($pref['eventpost_weekstart'])."</td>
+	</tr>
+	<tr>
+		<td class='forumheader3'>".EC_LAN_117."<br /></td>
+		<td class='forumheader3'>
+			<select name='eventpost_lenday' class='tbox'>
+			<option value='1' ".($pref['eventpost_lenday']=='1'?" selected='selected' ":"")." > 1 </option>
+			<option value='2' ".($pref['eventpost_lenday']=='2'?" selected='selected' ":"")." > 2 </option>
+			<option value='3' ".($pref['eventpost_lenday']=='3'?" selected='selected' ":"")." > 3 </option>
+			</select>
+		</td>
+	</tr>
+
+	<tr>
+		<td class='forumheader3'>".EC_LAN_118."<br /></td>
+		<td class='forumheader3'>
+			<select name='eventpost_dateformat' class='tbox'>
+			<option value='my' ".($pref['eventpost_dateformat']=='my'?" selected='selected' ":"")." >".EC_LAN_119."</option>
+			<option value='ym' ".($pref['eventpost_dateformat']=='ym'?" selected='selected' ":"")." >".EC_LAN_120."</option>
+			</select>
+		</td>
+	</tr>
+
+	<tr>
+		<td class='forumheader3'>".EC_ADLAN_A133."<br /></td>
+		<td class='forumheader3'>
+			<select name='eventpost_datedisplay' class='tbox'>
+			<option value='1' ".($pref['eventpost_datedisplay']=='1'?" selected='selected' ":"")." > yyyy-mm-dd</option>
+			<option value='2' ".($pref['eventpost_datedisplay']=='2'?" selected='selected' ":"")." > dd-mm-yyyy</option>
+			<option value='3' ".($pref['eventpost_datedisplay']=='3'?" selected='selected' ":"")." > mm-dd-yyyy</option>
+			<option value='4' ".($pref['eventpost_datedisplay']=='4'?" selected='selected' ":"")." > yyyy.mm.dd</option>
+			<option value='5' ".($pref['eventpost_datedisplay']=='5'?" selected='selected' ":"")." > dd.mm.yyyy</option>
+			<option value='6' ".($pref['eventpost_datedisplay']=='6'?" selected='selected' ":"")." > mm.dd.yyyy</option>
+			<option value='7' ".($pref['eventpost_datedisplay']=='7'?" selected='selected' ":"")." > yyyy/mm/dd</option>
+			<option value='8' ".($pref['eventpost_datedisplay']=='8'?" selected='selected' ":"")." > dd/mm/yyyy</option>
+			<option value='9' ".($pref['eventpost_datedisplay']=='9'?" selected='selected' ":"")." > mm/dd/yyyy</option>
+			</select>
+		</td>
+	</tr>
+
+	<tr>
+		<td class='forumheader3'>".EC_ADLAN_A138."</td>
+		<td class='forumheader3'><input class='tbox' type='checkbox' name='eventpost_fivemins' value='1' ".($pref['eventpost_fivemins']==1?" checked='checked' ":"")." />&nbsp;&nbsp;<span class='smalltext'><em>".EC_ADLAN_A139."</em></span>
+		</td>
+	</tr>
+
+	<tr>
+		<td class='forumheader3'>".EC_ADLAN_A200."<br /></td>
+		<td class='forumheader3'>
+			<select name='eventpost_editmode' class='tbox'>
+			<option value='0' ".($pref['eventpost_editmode']=='0'?" selected='selected' ":"")." >".EC_ADLAN_A201."</option>
+			<option value='1' ".($pref['eventpost_editmode']=='1'?" selected='selected' ":"")." >".EC_ADLAN_A202."</option>
+			<option value='2' ".($pref['eventpost_editmode']=='2'?" selected='selected' ":"")." >".EC_ADLAN_A203."</option>
+			</select>
+		</td>
+	</tr>
+
+	
+	<tr>
+		<td class='forumheader3'>".EC_ADLAN_A122."<br />
+		<span class='smalltext'><em>".EC_ADLAN_A124."</em></span>".$ecal_class->time_string($ecal_class->time_now)."<br />
+		<span class='smalltext'><em>".EC_ADLAN_A125."</em></span>".$ecal_class->time_string($ecal_class->site_timedate)."<br />
+		<span class='smalltext'><em>".EC_ADLAN_A126."</em></span>".$ecal_class->time_string($ecal_class->user_timedate)."
+		</td>
+		<td class='forumheader3'>
+			<select name='eventpost_caltime' class='tbox'>
+			<option value='1' ".($pref['eventpost_caltime']=='1'?" selected='selected' ":"")." > Server </option>
+			<option value='2' ".($pref['eventpost_caltime']=='2'?" selected='selected' ":"")." > Site </option>
+			<option value='3' ".($pref['eventpost_caltime']=='3'?" selected='selected' ":"")." > User </option>
+			</select><br /><span class='smalltext'><em>".EC_ADLAN_A129."</em></span>
+		</td>
+	</tr>
+
+	<tr>
+		<td class='forumheader3'>".EC_ADLAN_A123."<br />
+		<span class='smalltext'><em>".EC_ADLAN_A127."</em></span>
+		</td>
+		<td class='forumheader3'>
+			<select name='eventpost_timedisplay' class='tbox'>
+			<option value='1' ".($pref['eventpost_timedisplay']=='1'?" selected='selected' ":"")." > 24-hour hhmm </option>
+			<option value='4' ".($pref['eventpost_timedisplay']=='4'?" selected='selected' ":"")." > 24-hour hh:mm </option>
+			<option value='2' ".($pref['eventpost_timedisplay']=='2'?" selected='selected' ":"")." > 12-hour </option>
+			<option value='3' ".($pref['eventpost_timedisplay']=='3'?" selected='selected' ":"")." > Custom </option>
+			</select>
+            <input class='tbox' type='text' name='eventpost_timecustom' size='20' value='".$pref['eventpost_timecustom']."' maxlength='30' />
+			<br /><span class='smalltext'><em>".EC_ADLAN_A128."</em></span>
+		</td>
+	</tr>
+
+	<tr>
+		<td class='forumheader3'>".EC_ADLAN_A166."<br />
+		<span class='smalltext'><em>".EC_ADLAN_A169."</em></span>
+		</td>
+		<td class='forumheader3'>
+			<select name='eventpost_dateevent' class='tbox'>
+			<option value='1' ".($pref['eventpost_dateevent']=='1'?" selected='selected' ":"")." > dayofweek day month yyyy </option>
+			<option value='2' ".($pref['eventpost_dateevent']=='2'?" selected='selected' ":"")." > dyofwk day mon yyyy </option>
+			<option value='3' ".($pref['eventpost_dateevent']=='3'?" selected='selected' ":"")." > dyofwk dd-mm-yy </option>
+			<option value='0' ".($pref['eventpost_dateevent']=='0'?" selected='selected' ":"")." > Custom </option>
+			</select>
+            <input class='tbox' type='text' name='eventpost_eventdatecustom' size='20' value='".$pref['eventpost_eventdatecustom']."' maxlength='30' />
+			<br /><span class='smalltext'><em>".EC_ADLAN_A168."</em></span>
+		</td>
+	</tr>
+
+	<tr>
+		<td class='forumheader3'>".EC_ADLAN_A167."<br />
+		<span class='smalltext'><em>".EC_ADLAN_A170."</em></span>
+		</td>
+		<td class='forumheader3'>
+			<select name='eventpost_datenext' class='tbox'>
+			<option value='1' ".($pref['eventpost_datenext']=='1'?" selected='selected' ":"")." > dd month </option>
+			<option value='2' ".($pref['eventpost_datenext']=='2'?" selected='selected' ":"")." > dd mon </option>
+			<option value='3' ".($pref['eventpost_datenext']=='3'?" selected='selected' ":"")." > month dd </option>
+			<option value='4' ".($pref['eventpost_datenext']=='4'?" selected='selected' ":"")." > mon dd </option>
+			<option value='0' ".($pref['eventpost_datenext']=='0'?" selected='selected' ":"")." > Custom </option>
+			</select>
+            <input class='tbox' type='text' name='eventpost_nextdatecustom' size='20' value='".$pref['eventpost_nextdatecustom']."' maxlength='30' />
+			<br /><span class='smalltext'><em>".EC_ADLAN_A168."</em></span>
+		</td>
+	</tr>
+
+	<tr>
+		<td class='forumheader3'>".EC_ADLAN_A193."<br /></td>
+		<td class='forumheader3'>
+			<select name='eventpost_printlists' class='tbox'>
+			<option value='0' ".($pref['eventpost_printlists']=='0'?" selected='selected' ":"")." >". EC_ADLAN_A194." </option>
+			<option value='1' ".($pref['eventpost_printlists']=='1'?" selected='selected' ":"")." >".EC_ADLAN_A195."  </option>
+			<option value='2' ".($pref['eventpost_printlists']=='2'?" selected='selected' ":"")." >".EC_ADLAN_A196." </option>
+			</select>
+		</td>
+	</tr>
+
+	<tr>
+		<td class='forumheader3'>".EC_ADLAN_A95."</td>
+		<td class='forumheader3'><input class='tbox' type='checkbox' name='eventpost_asubs' value='1' ".($pref['eventpost_asubs']==1?" checked='checked' ":"")." />&nbsp;&nbsp;<span class='smalltext'><em>".EC_ADLAN_A96."</em></span>
+		</td>
+	</tr>
+	
+	<tr>
+		<td class='forumheader3'>".EC_ADLAN_A92."</td>
+		<td class='forumheader3'><input class='tbox' type='text' name='eventpost_mailfrom' size='60' value='".$pref['eventpost_mailfrom']."' maxlength='100' />
+		</td>
+	</tr>  
+
+	<tr>
+		<td class='forumheader3'>".EC_ADLAN_A91."</td>
+		<td class='forumheader3'><input class='tbox' type='text' name='eventpost_mailsubject' size='60' value='".$pref['eventpost_mailsubject']."' maxlength='100' />
+		</td>
+	</tr>
+
+	<tr>
+		<td class='forumheader3'>".EC_ADLAN_A93."</td>
+		<td class='forumheader3'><input class='tbox' type='text' name='eventpost_mailaddress' size='60' value='".$pref['eventpost_mailaddress']."' maxlength='100' />
+		</td>
+	</tr>
+
+	<tr>
+		<td class='forumheader3'>".EC_ADLAN_A114."<br /></td>
+		<td class='forumheader3'>
+			<select name='eventpost_emaillog' class='tbox'>
+			<option value='0' ".($pref['eventpost_emaillog']=='0'?" selected='selected' ":"")." >". EC_ADLAN_A87." </option>
+			<option value='1' ".($pref['eventpost_emaillog']=='1'?" selected='selected' ":"")." >".EC_ADLAN_A115."  </option>
+			<option value='2' ".($pref['eventpost_emaillog']=='2'?" selected='selected' ":"")." >".EC_ADLAN_A116." </option>
+			</select>
+		</td>
+	</tr>
+
+	<tr><td colspan='2'  style='text-align:center' class='fcaption'><input class='button' type='submit' name='updatesettings' value='".EC_LAN_77."' /></td></tr>
+	</table>
+	</form>
+	</div>";
+	
+	$ns->tablerender("<div style='text-align:center'>".EC_ADLAN_1." - ".EC_LAN_78."</div>", $text);
+}
+
+
+function admin_config_adminmenu()
+{
+		if (e_QUERY) {
+			$tmp = explode(".", e_QUERY);
+			$action = $tmp[0];
+		}
+		if (!isset($action) || ($action == ""))
+		{
+		  $action = "config";
+		}
+		$var['config']['text'] = EC_ADLAN_A10;
+		$var['config']['link'] = "admin_config.php";
+
+		$var['cat']['text'] = EC_ADLAN_A11;
+		$var['cat']['link'] ="admin_config.php?cat";
+
+		$var['forthcoming']['text'] = EC_ADLAN_A100;
+		$var['forthcoming']['link'] ="admin_config.php?forthcoming";
+
+		$var['maint']['text'] = EC_ADLAN_A141;
+		$var['maint']['link'] ="admin_config.php?maint";
+
+		$var['subs']['text'] = EC_ADLAN_A173;
+		$var['subs']['link'] ="admin_config.php?subs";
+
+		show_admin_menu(EC_ADLAN_A12, $action, $var);
+}
+
+
+require_once(e_ADMIN."footer.php");
+
 ?>
\ No newline at end of file
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/calendar_menu.php 1.0.4.src/e107_plugins/calendar_menu/calendar_menu.php
--- 1.0.2.src/e107_plugins/calendar_menu/calendar_menu.php	2013-10-11 14:02:27.333000029 -0500
+++ 1.0.4.src/e107_plugins/calendar_menu/calendar_menu.php	2013-09-26 16:49:50.000000000 -0500
@@ -1,251 +1,210 @@
 <?php
 /*
-* e107 website system
-*
-* Copyright (C) 2002-2010 e107 Inc (e107.org)
-* Released under the terms and conditions of the
-* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
-*
-* Event calendar plugin - calendar menu display
-*
-* $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/calendar_menu.php $
-* $Id: calendar_menu.php 11523 2010-05-05 20:04:43Z e107steved $
-*
-*/
+ * e107 website system
+ *
+ * Copyright (C) 2002-2013 e107 Inc (e107.org)
+ * Released under the terms and conditions of the
+ * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
+ *
+ * Event calendar - event entry and display
+ *
+ * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/calendar_menu.php $
+ * $Id: calendar_menu.php 13095 2013-04-11 19:47:45Z e107steved $
+ */
 
 
 if (!defined('e107_INIT')) { exit; }
-
 $ecal_dir	= e_PLUGIN . "calendar_menu/";
 require_once($ecal_dir.'ecal_class.php');
-$ecal_class = new ecal_class;
-
+if (!isset($ecal_class) || !is_object($ecal_class)) $ecal_class = new ecal_class;
 $cache_tag = "nq_event_cal_cal";
-
-
 // See if the page is already in the cache
 	if($cacheData = $e107cache->retrieve($cache_tag, $ecal_class->max_cache_time))
 	{
 		echo $cacheData;
 		return;
 	}
-
 include_lan($ecal_dir."languages/".e_LANGUAGE.".php");
-
 global $ecal_dir, $tp;
-
-
 if (is_readable(THEME."calendar_template.php"))
 {
   require(THEME."calendar_template.php");
 }
-else
+else 
 {  // Needs to be require - otherwise not loaded if two menus use it
   require($ecal_dir."calendar_template.php");
 }
-
+$show_recurring = TRUE;		// Could be pref later
+$cat_filter = '';			// Could be another pref later.
 $cal_datearray		= $ecal_class->cal_date;
 $cal_current_month	= $cal_datearray['mon'];
 $cal_current_year	= $cal_datearray['year'];
 $numberdays	= date("t", $ecal_class->cal_timedate); // number of days in this month
-
-
-$cal_monthstart		= mktime(0, 0, 0, $cal_current_month, 1, $cal_current_year);			// Time stamp for first day of month
-$cal_firstdayarray	= getdate($cal_monthstart);
-$cal_monthend		= mktime(0, 0, 0, $cal_current_month + 1, 1, $cal_current_year) -1;		// Time stamp for last day of month
-
-
-    $cal_qry = "SELECT e.event_rec_m, e.event_rec_y, e.event_start, e.event_end, e.event_datestamp, ec.*
-	FROM #event as e LEFT JOIN #event_cat as ec ON e.event_category = ec.event_cat_id
-	WHERE ((e.event_start >= {$cal_monthstart} AND e.event_start <= {$cal_monthend}) OR (e.event_rec_y = {$cal_current_month}))
-	{$ecal_class->extra_query} order by e.event_start";
-
-
+$cal_monthstart		= gmmktime(0, 0, 0, $cal_current_month, 1, $cal_current_year);			// Time stamp for first day of month
+$cal_firstdayarray	= $ecal_class->gmgetdate($cal_monthstart);												
+$cal_monthend		= gmmktime(0, 0, 0, $cal_current_month + 1, 1, $cal_current_year) -1;		// Time stamp for last day of month
+//$cal_thismonth	= $cal_datearray['mon'];
+$cal_thisday	= $cal_datearray['mday'];	// Today
 $cal_events = array();
+$cal_titles = array();
+$cal_recent = array();
 $cal_totev = 0;
-if ($cal_totev = $sql->db_Select_gen($cal_qry))
-{
-	while ($cal_row = $sql->db_Fetch())
-	{
-		if ($cal_row['event_rec_y'] == $cal_current_month)
-		{	// Recurring events
-			$cal_start_day = $cal_row['event_rec_m'];
-		}
-		else
-		{	// 'normal' events
-			$cal_tmp = getdate($cal_row['event_start']);
-			if ($cal_tmp['mon'] == $cal_current_month)
-			{
-				$cal_start_day = $cal_tmp['mday'];
-			}
-			else
-			{
-				$cal_start_day = 1;
-			}
-		}
+
+$ev_list = $ecal_class->get_events($cal_monthstart, $cal_monthend, TRUE, $cat_filter, $show_recurring, 
+						'event_start, event_thread, event_title, event_recurring, event_allday', 'event_cat_icon');
+$cal_totev = count($ev_list);
+
+// Generate an array, one element per day of the month, and assign events to them
+foreach ($ev_list as $cal_row)
+{
+    if (is_array($cal_row['event_start'])) $temp = $cal_row['event_start']; else $temp = array($cal_row['event_start']);
+	foreach ($temp as $ts)
+	{	// Split up any recurring events
+		$cal_start_day = date('j',$ts);		// Day of month for start
 		// Mark start day of each event
-		$cal_events[$cal_start_day][] = $cal_row['event_cat_icon'];	// Will be overwritten if several events on same day
-		if ((($ecal_class->max_recent_show != 0) && (time() - $cal_row['event_datestamp']) <= $ecal_class->max_recent_show)) $cal_events[$cal_start_day]['is_recent'] = TRUE;
+		$cal_events[$cal_start_day][] = $cal_row['event_cat_icon'];	// Only first is actually used
+		if (isset($cal_row['is_recent']))  $cal_recent[$cal_start_day] = TRUE;
+		$cal_titles[$cal_start_day][] = $cal_row['event_title'];	// In case titles displayed on mouseover
 	}
 }
 
-
-if ($pref['eventpost_weekstart'] == 'sun')
-{
-	$cal_week	= array(EC_LAN_25, EC_LAN_19, EC_LAN_20, EC_LAN_21, EC_LAN_22, EC_LAN_23, EC_LAN_24);
-}
-else
-{
-	$cal_week	= array(EC_LAN_19, EC_LAN_20, EC_LAN_21, EC_LAN_22, EC_LAN_23, EC_LAN_24, EC_LAN_25);
-}
-
+// set up month array for calendar display
 $cal_months	= array(EC_LAN_0, EC_LAN_1, EC_LAN_2, EC_LAN_3, EC_LAN_4, EC_LAN_5, EC_LAN_6, EC_LAN_7, EC_LAN_8, EC_LAN_9, EC_LAN_10, EC_LAN_11);
-
-
-$calendar_title = "<a class='forumlink' href='".e_PLUGIN."calendar_menu/";
-if ($pref['eventpost_menulink'] == 1)
-{
-	$calendar_title .= "calendar.php' >";
-}
-else
-{
-	$calendar_title .= "event.php' >";
-}
 if ($pref['eventpost_dateformat'] == 'my')
 {
-    $calendar_title .= $cal_months[$cal_datearray['mon']-1] ." ". $cal_current_year . "</a>";
+	$calendar_title = $cal_months[$cal_current_month-1] .' '. $cal_current_year;
 }
 else
 {
-    $calendar_title .= $cal_current_year ." ". $cal_months[$cal_datearray['mon']-1] . "</a>";
+	$calendar_title = $cal_current_year .' '. $cal_months[$cal_current_month-1];
 }
 
+switch ($pref['eventpost_menulink']) 
+{
+	case 0 :  
+		$calendar_title = "<a {$CALENDAR_MENU_HDG_LINK_CLASS} href='".e_PLUGIN."calendar_menu/event.php' >".$calendar_title."</a>";
+		break;
+	case 1 :  
+		$calendar_title = "<a {$CALENDAR_MENU_HDG_LINK_CLASS} href='".e_PLUGIN."calendar_menu/calendar.php' >".$calendar_title."</a>";
+		break;
+	default : ;
+}
 
 $cal_text = $CALENDAR_MENU_START;
-
-
 if ($pref['eventpost_showeventcount']=='1')
 {
-  if ($cal_totev)
-  {
-    $cal_text .= EC_LAN_26 . ": " . $cal_totev;
-  }
-  else
-  {
-    $cal_text .= EC_LAN_27;
-  }
-  $cal_text .= "<br /><br />";
+	if ($cal_totev)
+	{
+		$cal_text .= EC_LAN_26 . ": " . $cal_totev;
+	}
+	else
+	{
+		$cal_text .= EC_LAN_27;
+	}
+	$cal_text .= "<br /><br />";
 }
 
 $cal_start	= $cal_monthstart;		// First day of month as time stamp
-
-
 // Start the table
 $cal_text .= $CALENDAR_MENU_TABLE_START;
 // Open header row
 $cal_text .= $CALENDAR_MENU_HEADER_START;
-// Now do the headings
-
-foreach($cal_week as $cal_day)
+// Now do the headings (days of week)
+for ($i = 0; $i < 7; $i++)
 {
-    $cal_text .= $CALENDAR_MENU_HEADER_FRONT;
-	$cal_text .= $tp->text_truncate($cal_day, $pref['eventpost_lenday'], '');
-    $cal_text .= $CALENDAR_MENU_HEADER_BACK;
+	$cal_day = $ecal_class->day_offset_string($i);
+	$cal_text .= $CALENDAR_MENU_HEADER_FRONT;
+//  $cal_text .= substr($cal_day, 0, $pref['eventpost_lenday']);
+	$cal_text .= $tp->text_truncate($cal_day, 1, '');		// Unlikely to have room for more than 1 letter
+	$cal_text .= $CALENDAR_MENU_HEADER_BACK;
 }
 $cal_text .= $CALENDAR_MENU_HEADER_END;  // Close off header row, open first date row
-
-
-$cal_thismonth	= $cal_datearray['mon'];
-$cal_thisday	= $cal_datearray['mday'];	// Today
-
-
-if ($pref['eventpost_weekstart'] == 'mon')
-{
-    $firstdayoffset = ($cal_firstdayarray['wday'] == 0 ? $cal_firstdayarray['wday'] + 6 : $cal_firstdayarray['wday']-1);
-}
-else
-{
-    $firstdayoffset = $cal_firstdayarray['wday'];
-}
-
-
+// Calculate number of days to skip before 'real' days on first line of calendar
+$firstdayoffset = gmdate('w',$cal_start) - $ecal_class->ec_first_day_of_week;
+if ($firstdayoffset < 0) $firstdayoffset+= 7;
 for ($cal_c = 0; $cal_c < $firstdayoffset; $cal_c++)
 {
 	$cal_text .= $CALENDAR_MENU_DAY_NON;
 }
 $cal_loop = $firstdayoffset;
-
 // Now do the days of the month
 for($cal_c = 1; $cal_c <= $numberdays; $cal_c++)
-{   // Four cases to decode:
+{   // Six cases to decode:
 	//     	1 - Today, no events
-	//		2 - Some other day, no events (or no icon defined)
-	//		3 - Today with events (and icon defined)
-	//		4 - Some other day with events (and icon defined)
-    $cal_dayarray = getdate($cal_start + (($cal_c-1) * 86400));
+	//		2 - Some other day, no events
+	//		3 - Today with events
+	//		4 - Some other day with events
+	//		5 - Today with recently added events
+	//		6 - Some other day with recently added events
+//    $cal_dayarray = getdate($cal_start + (($cal_c-1) * 86400));
 	$cal_css = 2;		// The default - not today, no events
-    if ($cal_dayarray['mon'] == $cal_thismonth)
-    {  // Dates match for this month
-		$cal_img = $cal_c;		// Default 'image' is the day of the month
-		$cal_event_count = 0;
-		$title = "";
-		if ($cal_thisday == $cal_c) $cal_css = 1;
-        $cal_linkut = mktime(0 , 0 , 0 , $cal_dayarray['mon'], $cal_c, $cal_datearray['year']).".one";  // ALways need "one"
-        if (array_key_exists($cal_c, $cal_events))
-        {	// Events happening today
-            $cal_event_count = count($cal_events[$cal_c]);		// See how many events today
+    $cal_img = $cal_c;		// Default 'image' is the day of the month
+    $cal_event_count = 0;
+    $title = "";
+    if ($cal_thisday == $cal_c) $cal_css = 1;
+    $cal_linkut = gmmktime(0 , 0 , 0 , $cal_current_month, $cal_c, $cal_current_year).".one";  // Always need "one"
+    if (array_key_exists($cal_c, $cal_events))
+    {	// There are events today
+		$cal_event_icon = "calendar_menu/images/" . $cal_events[$cal_c]['0'];		// Icon file could be NULL
+		$cal_event_count = count($cal_events[$cal_c]);		// See how many events today
+		if ($cal_event_count)
+		{   // Show icon if it exists
 			$cal_css += 2;		// Gives 3 for today, 4 for other day
-			if ($cal_event_count == 1)
+			if (isset($pref['eventpost_showmouseover']) && ($pref['eventpost_showmouseover'] == 1))
 			{
-				$title = " title='1 ".EC_LAN_135."' ";
+				$cal_ins = " title='";
+				foreach ($cal_titles[$cal_c] as $cur_title)
+				{  // New line would be better, but doesn't get displayed
+					$title .= $cal_ins.$cur_title;
+					$cal_ins = ", ";
+				}
+				$title .= "'";
 			}
 			else
 			{
-				$title = " title='{$cal_event_count} " . EC_LAN_106 . "' ";
-			}
-			if (isset($cal_events[$cal_c]['is_recent']) && $cal_events[$cal_c]['is_recent'])
-			{
-				$cal_css += 2;
-			}
-
-            if (!empty($cal_events[$cal_c]['0']))
-			{
-				$cal_event_icon = "calendar_menu/images/" . $cal_events[$cal_c]['0'];
-				if (is_readable(e_PLUGIN.$cal_event_icon))
-				{   // Show icon if it exists
-					$cal_img = "<img style='border:0' src='".e_PLUGIN_ABS.$cal_event_icon."' alt='' />";
+				if ($cal_event_count == 1)
+				{
+					$title = " title='1 ".EC_LAN_135."' ";
+				}
+				else
+				{
+					$title = " title='{$cal_event_count} " . EC_LAN_106 . "' ";
 				}
-			}
 		}
-        $cal_text .= $CALENDAR_MENU_DAY_START[$cal_css]."<a {$title} href='" . e_PLUGIN_ABS."calendar_menu/event.php?{$cal_linkut}'>{$cal_img}</a>";
-        $cal_text .= $CALENDAR_MENU_DAY_END[$cal_css];
-        $cal_loop++;
-        if ($cal_loop == 7)
-        {  // Start next row
-            $cal_loop = 0;
-			if ($cal_c != $numberdays)
-			{
-              $cal_text .= $CALENDAR_MENU_WEEKSWITCH;
-			}
-        }
+        if (is_file(e_PLUGIN.$cal_event_icon)) $cal_img = "<img style='border:0' src='".e_PLUGIN_ABS.$cal_event_icon."' alt='' />";
+				//height='10' width='10'
+		if (isset($cal_recent[$cal_c]) && $cal_recent[$cal_c])
+		{
+		  $cal_css += 2;
+		}
+      }
+	}
+    $cal_text .= $CALENDAR_MENU_DAY_START[$cal_css]."<a {$title} href='" . e_PLUGIN_ABS."calendar_menu/event.php?{$cal_linkut}'>{$cal_img}</a>";
+    $cal_text .= $CALENDAR_MENU_DAY_END[$cal_css];
+    $cal_loop++;
+    if ($cal_loop == 7)
+    {  // Start next row
+		$cal_loop = 0;
+		if ($cal_c != $numberdays)
+		{
+			$cal_text .= $CALENDAR_MENU_WEEKSWITCH;
+		}
     }
 }
-
 if ($cal_loop != 0)
 {
-for($cal_a = ($cal_loop + 1); $cal_a <= 7; $cal_a++)
-{
-	$cal_text .= $CALENDAR_MENU_DAY_NON;
-}
+	for($cal_a = ($cal_loop + 1); $cal_a <= 7; $cal_a++)
+	{
+		$cal_text .= $CALENDAR_MENU_DAY_NON;
+	}
 }
 // Close table
 $cal_text .= $CALENDAR_MENU_END;
-
 // Now handle the data, cache as well
 ob_start();					// Set up a new output buffer
 $ns->tablerender($calendar_title, $cal_text, 'calendar_menu');
 $cache_data = ob_get_flush();			// Get the page content, and display it
 $e107cache->set($cache_tag, $cache_data);	// Save to cache
-
-
-?>
+unset($ev_list);
+unset($cal_text);
+?>
\ No newline at end of file
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/calendar.php 1.0.4.src/e107_plugins/calendar_menu/calendar.php
--- 1.0.2.src/e107_plugins/calendar_menu/calendar.php	2013-10-11 14:02:27.333000029 -0500
+++ 1.0.4.src/e107_plugins/calendar_menu/calendar.php	2013-09-26 16:49:50.000000000 -0500
@@ -1,324 +1,285 @@
-<?php
-/*
-+ ----------------------------------------------------------------------------+
-|     e107 website system
-|
-|     Copyright (C) 2001-2002 Steve Dunstan (jalist@e107.org)
-|     Copyright (C) 2008-2010 e107 Inc (e107.org)
-|
-|
-|     Released under the terms and conditions of the
-|     GNU General Public License (http://gnu.org).
-|
-|     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/calendar.php $
-|     $Revision: 12098 $
-|     $Id: calendar.php 12098 2011-03-12 12:38:17Z e107steved $
-|     $Author: e107steved $
-|
-| 11.11.06 - steved - mods for next CVS release
-|
-+----------------------------------------------------------------------------+
-*/ 
-
-
-require_once("../../class2.php");
-require_once(e_PLUGIN."calendar_menu/calendar_shortcodes.php");
-if (isset($_POST['viewallevents']))
-{
-    header("Location: " . e_PLUGIN . "calendar_menu/event.php?" . $_POST['enter_new_val']);
-	exit;
-} 
-if (isset($_POST['doit']))
-{
-    header("Location: " . e_PLUGIN . "calendar_menu/event.php?ne." . $_POST['enter_new_val']);
-	exit;
-}
-if (isset($_POST['subs']))
-{
-    header("Location: " . e_PLUGIN . "calendar_menu/subscribe.php");
-	exit;
-} 
-
-include_lan(e_PLUGIN."calendar_menu/languages/".e_LANGUAGE.".php");
-define("PAGE_NAME", EC_LAN_121);
-
-require_once('ecal_class.php');
-$ecal_class = new ecal_class;
-
-if (is_readable(THEME."calendar_template.php")) 
-{
-  require(THEME."calendar_template.php");
-}
-else 
-{
-  require(e_PLUGIN."calendar_menu/calendar_template.php");
-}
-
-$num = (isset($_POST['num']) && $_POST['num'] ? $_POST['num'] : "");
-
-
-$category_filter = "";
-if  ((isset($_POST['event_cat_ids']) && $_POST['event_cat_ids'] != "all"))
-{
-  $category_filter = " AND (e.event_category = '".intval($_POST['event_cat_ids'])."') ";
-}
-
-
-require_once(HEADERF);
-
-// get current date information ---------------------------------------------------------------------
-$qs = explode(".", e_QUERY);
-if($qs[0] == "")
-{	// Show current month
-  $datearray	= $ecal_class->cal_date;
-} 
-else
-{	// Get date from query
-  $datearray	= getdate($qs[0]);
-}
-  $month	= $datearray['mon'];
-  $year		= $datearray['year'];
-
-
-// set up arrays for calender display ------------------------------------------------------------------
-if($pref['eventpost_weekstart'] == 'sun') {
-	$week	= Array(EC_LAN_25, EC_LAN_19, EC_LAN_20, EC_LAN_21, EC_LAN_22, EC_LAN_23, EC_LAN_24);
-	} else {
-	$week	= Array(EC_LAN_19, EC_LAN_20, EC_LAN_21, EC_LAN_22, EC_LAN_23, EC_LAN_24, EC_LAN_25);
-}	
-$months		= Array(EC_LAN_0, EC_LAN_1, EC_LAN_2, EC_LAN_3, EC_LAN_4, EC_LAN_5, EC_LAN_6, EC_LAN_7, EC_LAN_8, EC_LAN_9, EC_LAN_10, EC_LAN_11);
-$monthabb	= Array(EC_LAN_JAN, EC_LAN_FEB, EC_LAN_MAR, EC_LAN_APR, EC_LAN_MAY, EC_LAN_JUN, EC_LAN_JUL, EC_LAN_AUG, EC_LAN_SEP, EC_LAN_OCT, EC_LAN_NOV, EC_LAN_DEC);
-
-$days = array(EC_LAN_DAY_1, EC_LAN_DAY_2, EC_LAN_DAY_3, EC_LAN_DAY_4, EC_LAN_DAY_5, EC_LAN_DAY_6, EC_LAN_DAY_7, EC_LAN_DAY_8, EC_LAN_DAY_9, EC_LAN_DAY_10, EC_LAN_DAY_11, EC_LAN_DAY_12, EC_LAN_DAY_13, EC_LAN_DAY_14, EC_LAN_DAY_15, EC_LAN_DAY_16, EC_LAN_DAY_17, EC_LAN_DAY_18, EC_LAN_DAY_19, EC_LAN_DAY_20, EC_LAN_DAY_21, EC_LAN_DAY_22, EC_LAN_DAY_23, EC_LAN_DAY_24, EC_LAN_DAY_25, EC_LAN_DAY_26, EC_LAN_DAY_27, EC_LAN_DAY_28, EC_LAN_DAY_29, EC_LAN_DAY_30, EC_LAN_DAY_31);
-
-// show events-------------------------------------------------------------------------------------------
-$monthstart		= mktime(0, 0, 0, $month, 1, $year);		// Start of month to be shown
-$firstdayarray	= getdate($monthstart);
-$monthend		= mktime(0, 0, 0, $month + 1, 1, $year) - 1;	// End of month to be shown
-
-$prevmonth		= ($month-1);
-$prevyear		= $year;
-if ($prevmonth == 0)
-{
-    $prevmonth	= 12;
-    $prevyear	= ($year-1);
-} 
-$previous = mktime(0, 0, 0, $prevmonth, 1, $prevyear);		// Used by nav
-
-$nextmonth		= ($month + 1);
-$nextyear		= $year;
-if ($nextmonth == 13)
-{
-    $nextmonth	= 1;
-    $nextyear	= ($year + 1);
-} 
-$next			= mktime(0, 0, 0, $nextmonth, 1, $nextyear);
-$py				= $year-1;
-$prevlink		= mktime(0, 0, 0, $month, 1, $py);
-$ny				= $year + 1;
-$nextlink		= mktime(0, 0, 0, $month, 1, $ny);
-
-$prop		= mktime(0, 0, 0, $month, 1, $year);		// Sets start date for new event entry
-$nowmonth	= $ecal_class->cal_date['mon'];
-$nowyear	= $ecal_class->cal_date['year'];
-$nowday		= $ecal_class->cal_date['mday'];
-
-$events = array();
-
-// time switch buttons
-$cal_text = $tp -> parseTemplate($CALENDAR_TIME_TABLE, FALSE, $calendar_shortcodes);
-
-// navigation buttons
-$nav_text = $tp -> parseTemplate($CALENDAR_NAVIGATION_TABLE, FALSE, $calendar_shortcodes);
-
-// get events from selected
-    $qry = "SELECT e.*, ec.*
-			FROM #event as e
-			LEFT JOIN #event_cat as ec ON e.event_category = ec.event_cat_id
-			WHERE e.event_id != '' 
-			AND ((e.event_start >= ".intval($monthstart)." AND e.event_start <= ".intval($monthend).") 
-			OR   (e.event_end >= ".intval($monthstart)." AND e.event_end <= ".intval($monthend).")
-			OR	 (e.event_start <= ".intval($monthstart)." AND e.event_end >= ".intval($monthend).")
-			OR 	 (e.event_recurring = '1' AND e.event_rec_y = ".intval($month).")) {$category_filter}
-			{$ecal_class->extra_query}
-			ORDER BY e.event_start";
-
-if ($sql->db_Select_gen($qry))
-{
-    while ($row = $sql->db_Fetch())
-	{
-		// check for recurring events in this month
-		if($row['event_recurring']=='1')
-		{
-		  if ($month == $row['event_rec_y'])
-		  {	// Change it into an event that happens today
-			$row['event_start'] = mktime(0,0,0,$row['event_rec_y'],$row['event_rec_m'],$year);
-			$row['event_end'] = $row['event_start'];    
-		  }
-		  else
-		  {  // Effectively create a null event
-		    $row['event_start'] = 0;
-			$row['event_end'] = 0;
-		  }
-		}
-
-		$evf	= getdate($row['event_start']);
-		$tmp	= $evf['mday'];		// Day of month for start
-		$eve	= getdate($row['event_end']);
-		$tmp2	= $eve['mday'];		// Day of month for end
-		$tmp3	= date("t", $monthstart); // number of days in this month
-		if ((($ecal_class->max_recent_show != 0) && (time() - $row['event_datestamp']) <= $ecal_class->max_recent_show)) $row['is_recent'] = TRUE; 
-
-		//1) start in month, end in month
-		if(($row['event_start']>=$monthstart && $row['event_start']<=$monthend) && $row['event_end']<=$monthend)
-		{
-			$events[$tmp][] = $row;
-			for ($c=($tmp+1); $c<($tmp2+1); $c++) 
-			{
-				$row['event_true_end'][$c] = ($c!=$tmp2 ? 1 : 2);
-				$events[$c][] = $row;
-			}
-
-		//2) start in month, end after month
-		}
-		elseif(($row['event_start']>=$monthstart && $row['event_start']<=$monthend) && $row['event_end']>=$monthend)
-		{
-			$events[$tmp][] = $row;
-			for ($c=($tmp+1); $c<=$tmp3; $c++)
-			{
-				$row['event_true_end'][$c] = 1;
-				$events[$c][] = $row;
-			}
-
-		//3) start before month, end in month
-		}
-		elseif($row['event_start']<=$monthstart && ($row['event_end']>=$monthstart && $row['event_end']<=$monthend))
-		{
-			for ($c=1; $c<=$tmp2; $c++)
-			{
-				$row['event_true_end'][$c] = ($c!=$tmp2 ? 1 : 2);
-				$events[$c][] = $row;
-			}
-
-		//4) start before month, end after month
-		}
-		elseif($row['event_start']<=$monthstart && $row['event_end']>=$monthend)
-		{
-			for ($c=1; $c<=$tmp3; $c++){
-				$row['event_true_end'][$c] = 1;
-				$events[$c][] = $row;
-			}
-		}
-	}
-}
-
-
-// ****** CAUTION - the category dropdown also used $sql object - take care to avoid interference!
-
-$start		= $monthstart;
-$numberdays	= date("t", $start); // number of days in this month
-
-$text = "";
-$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_START, FALSE, $calendar_shortcodes);
-$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_HEADER_START, FALSE, $calendar_shortcodes);
-foreach($week as $day)
-{
-	$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_HEADER, FALSE, $calendar_shortcodes);
-} 
-$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_HEADER_END, FALSE, $calendar_shortcodes);
-
-$calmonth	= $datearray['mon'];
-$calday		= $datearray['mday'];
-$calyear	= $datearray['year'];
-
-if ($pref['eventpost_weekstart'] == 'mon') 
-{
-  $firstdayoffset = ($firstdayarray['wday'] == 0 ? $firstdayarray['wday']+6 : $firstdayarray['wday']-1);
-}
-else 
-{
-  $firstdayoffset = $firstdayarray['wday'] ;
-}
-for ($c=0; $c<$firstdayoffset; $c++) 
-{
-  $text .= $tp -> parseTemplate($CALENDAR_CALENDAR_DAY_NON, FALSE, $calendar_shortcodes);
-}
-$loop = $firstdayoffset;
-
-for ($c = 1; $c <= $numberdays; $c++)
-{
-    $dayarray	= getdate($start + (($c-1) * 86400));
-    $stopp		= mktime(24, 0, 0, $calmonth, $c, $calyear);
-    $startt		= mktime(0, 0, 0, $calmonth, $c, $calyear); 
-   // Highlight the current day.
-    if ($dayarray['mon'] == $calmonth)
-    {
-        if ($nowday == $c && $calmonth == $nowmonth && $calyear == $nowyear)
-        {
-        	//today
-			$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_DAY_TODAY, FALSE, $calendar_shortcodes);
-		}
-		elseif(isset($events[$c]) && is_array($events[$c]) && !empty($events[$c]) && count($events[$c]) > 0)
-		{
-			//day has events
-			$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_DAY_EVENT, FALSE, $calendar_shortcodes);
-        } 
-        else
-        {
-            // no events and not today
-			$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_DAY_EMPTY, FALSE, $calendar_shortcodes);
-        } 
-        // if there are events then list them
-        if (array_key_exists($c, $events))
-		{
-            foreach($events[$c] as $ev)
-            {
-				//if ($event_true_end[$c][$a]){
-				if(isset($ev['event_true_end']) && $ev['event_true_end'])
-				{
-					//$ev['indicat'] = ($ev['event_true_end']==1 ? "->" : "|");
-					$ev['indicat'] = "";
-					$ev['imagesize'] = "4";
-					$ev['fulltopic'] = FALSE;
-					$ev['startofevent'] = FALSE;
-				}
-				else
-				{
-					$ev['indicat'] = "";
-					$ev['imagesize'] = "8";
-					$ev['fulltopic'] = TRUE;
-					$ev['startofevent'] = TRUE;
-				}
-				$text .= $tp -> parseTemplate($CALENDAR_SHOWEVENT, FALSE, $calendar_shortcodes);
-			} 
-        } 
-		$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_DAY_END, FALSE, $calendar_shortcodes);
-    } 
-    $loop++;
-    if ($loop == 7)
-    {
-        $loop = 0;
-		if($c != $numberdays)
-		{
-			$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_WEEKSWITCH, FALSE, $calendar_shortcodes);
+<?php
+/*
+ * e107 website system
+ *
+ * Copyright (C) 2002-2010 e107 Inc (e107.org)
+ * Released under the terms and conditions of the
+ * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
+ *
+ * Event calendar - full-page calendar display
+ *
+ * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/calendar.php $
+ * $Id: calendar.php 13092 2013-04-08 21:26:52Z e107steved $
+ */
+
+
+require_once('../../class2.php');
+
+
+
+if (isset($_POST['viewallevents']))
+{
+    Header('Location: '.e_PLUGIN_ABS.'calendar_menu/event.php?' . $_POST['enter_new_val']);
+	exit();
+} 
+if (isset($_POST['doit']))
+{
+    Header('Location: '.e_PLUGIN_ABS.'calendar_menu/event.php?ne.' . $_POST['enter_new_val']);
+	exit();
+}
+if (isset($_POST['subs']))
+{
+    Header('Location: '.e_PLUGIN_ABS.'calendar_menu/subscribe.php');
+	exit();
+} 
+if (isset($_POST['printlists']))
+{
+    Header('Location: '.e_PLUGIN_ABS.'calendar_menu/ec_pf_page.php');
+	exit();
+} 
+
+
+require_once(e_PLUGIN.'calendar_menu/calendar_shortcodes.php');
+include_lan(e_PLUGIN.'calendar_menu/languages/'.e_LANGUAGE.'.php');
+define('PAGE_NAME', EC_LAN_121);
+
+require_once('ecal_class.php');
+$ecal_class = new ecal_class;
+
+if (is_readable(THEME.'calendar_template.php')) 
+{
+	require(THEME.'calendar_template.php');
+}
+else 
+{
+	require(e_PLUGIN.'calendar_menu/calendar_template.php');
+}
+
+
+$cat_filter = intval(varset($_POST['event_cat_ids'],0));
+
+require_once(HEADERF);
+
+// get date within area to display
+$qs = explode(".", e_QUERY);
+if(varset($qs[0],'') == '')
+{	// Show current month
+	$datearray	= $ecal_class->cal_date;
+} 
+else
+{	// Get date from query
+	$datearray	= $ecal_class->gmgetdate($qs[0]);
+}
+
+// Note: A lot of the following variables are used within the shortcodes
+$month		= $datearray['mon'];							// Number of month being shown
+$year		= $datearray['year'];							// Number of year being shown
+$monthstart	= gmmktime(0, 0, 0, $month, 1, $year);			// Start of month to be shown
+$monthend	= gmmktime(0, 0, 0, $month + 1, 1, $year) - 1;	// End of month to be shown
+$prevmonth		= $month-1;
+$prevyear		= $year;
+if ($prevmonth == 0)
+{
+  $prevmonth	= 12;
+  $prevyear	= $year-1;
+} 
+$previous = gmmktime(0, 0, 0, $prevmonth, 1, $prevyear);		// Used by nav
+
+$nextmonth		= $month + 1;
+$nextyear		= $year;
+if ($nextmonth == 13)
+{
+  $nextmonth	= 1;
+  $nextyear	= $year + 1;
+} 
+$next			= gmmktime(0, 0, 0, $nextmonth, 1, $nextyear);
+$py				= $year-1;									// Number of previous year for nav
+$prevlink		= gmmktime(0, 0, 0, $month, 1, $py);
+$ny				= $year + 1;								// Number of next year for nav
+$nextlink		= gmmktime(0, 0, 0, $month, 1, $ny);
+
+$prop		= gmmktime(0, 0, 0, $month, 1, $year);		// Sets start date for new event entry
+$nowmonth	= $ecal_class->cal_date['mon'];
+$nowyear	= $ecal_class->cal_date['year'];
+$nowday		= $ecal_class->cal_date['mday'];
+
+
+// set up arrays for calendar display ------------------------------------------------------------------
+// $months is used in the navigator buttons. $monthabb is used for month list
+$months		= Array(EC_LAN_0, EC_LAN_1, EC_LAN_2, EC_LAN_3, EC_LAN_4, EC_LAN_5, EC_LAN_6, EC_LAN_7, EC_LAN_8, EC_LAN_9, EC_LAN_10, EC_LAN_11);
+$monthabb	= Array(EC_LAN_JAN, EC_LAN_FEB, EC_LAN_MAR, EC_LAN_APR, EC_LAN_MAY, EC_LAN_JUN, EC_LAN_JUL, EC_LAN_AUG, EC_LAN_SEP, EC_LAN_OCT, EC_LAN_NOV, EC_LAN_DEC);
+
+$days = array(EC_LAN_DAY_1, EC_LAN_DAY_2, EC_LAN_DAY_3, EC_LAN_DAY_4, EC_LAN_DAY_5, EC_LAN_DAY_6, EC_LAN_DAY_7, EC_LAN_DAY_8, EC_LAN_DAY_9, EC_LAN_DAY_10, EC_LAN_DAY_11, EC_LAN_DAY_12, EC_LAN_DAY_13, EC_LAN_DAY_14, EC_LAN_DAY_15, EC_LAN_DAY_16, EC_LAN_DAY_17, EC_LAN_DAY_18, EC_LAN_DAY_19, EC_LAN_DAY_20, EC_LAN_DAY_21, EC_LAN_DAY_22, EC_LAN_DAY_23, EC_LAN_DAY_24, EC_LAN_DAY_25, EC_LAN_DAY_26, EC_LAN_DAY_27, EC_LAN_DAY_28, EC_LAN_DAY_29, EC_LAN_DAY_30, EC_LAN_DAY_31);
+
+
+//-------------------------------------------------
+// 		Start calculating text to display
+//-------------------------------------------------
+
+// time switch buttons
+$cal_text = $tp -> parseTemplate($CALENDAR_TIME_TABLE, FALSE, $calendar_shortcodes);
+
+// navigation buttons
+$nav_text = $tp -> parseTemplate($CALENDAR_NAVIGATION_TABLE, FALSE, $calendar_shortcodes);
+
+// We'll need virtually all of the event-related fields, so get them regardless. Just cut back on category fields
+$ev_list = $ecal_class->get_events($monthstart, $monthend, FALSE, $cat_filter, TRUE, '*', 'event_cat_name,event_cat_icon');
+
+// We create an array $events[] which has a 'primary' index of each day of the current month - 1..31 potentially
+// For each day there is then a sub-array entry for each event
+// Note that the new class-based retrieval adds an 'is_recent' flag to the data if changed according to the configured criteria
+$events = array();
+foreach ($ev_list as $row)
+{
+	$row['startofevent'] = TRUE;			// This sets 'large print' and so on for the first day of an event
+
+	// check for recurring events in this month (could also use is_array($row['event_start']) as a test)
+	if($row['event_recurring'] != '0')
+	{  // There could be several dates for the same event, if its a daily/weekly event
+		$t_start = $row['event_start'];
+		foreach ($t_start as $ev_start)
+		{
+		// Need to save event, copy marker for date
+			$row['event_start'] = $ev_start;
+			$events[gmdate('j',$ev_start)][] = $row;
+		}
+	}
+	else
+	{  // Its a 'normal' event
+		$tmp	= gmdate('j',$row['event_start']);		// Day of month for start
+		if ($row['event_allday'])
+		{
+			$tmp2 = $tmp;			// Same day for start and end
+		}
+		else
+		{
+			$tmp2	= gmdate('j',$row['event_end']-1);			// Day of month for end - knock off a second to allow for BST and suchlike
 		}
-    } 
-}
-//remainder cells to end the row properly with empty cells
-if($loop!=0)
-{
-	$remainder = 7-$loop;
-	for ($c=0; $c<$remainder; $c++) 
-	{
-		$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_DAY_NON, FALSE, $calendar_shortcodes);
-	}
-}
-$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_END, FALSE, $calendar_shortcodes);
-
-$caption	= EC_LAN_79; // "Calendar View";
-$nav		= $cal_text . $nav_text . $text;
-$ns->tablerender($caption, $nav);
-
-require_once(FOOTERF);
-
+		if(($row['event_start']>=$monthstart) && ($row['event_start']<=$monthend))
+		{	// Start within month
+			$events[$tmp][] = $row;
+			$tmp++;
+			if ($row['event_end']>$monthend)
+			{  // End outside month
+				$tmp2	= gmdate("t", $monthstart); // number of days in this month
+			}
+		}
+		else
+		{	// Start before month
+			$tmp = 1;
+			if ($row['event_end']>$monthend)
+			{  // End outside month
+				$tmp2	= gmdate("t", $monthstart); // number of days in this month
+			}
+		}
+		// Now put in markers for all 'non-start' days within current month
+		$row['startofevent'] = FALSE;
+		for ($c= $tmp; $c<=$tmp2; $c++) 
+		{
+			$events[$c][] = $row;
+		}
+	}
+}
+
+
+
+// ****** CAUTION - the category dropdown also used $sql object - take care to avoid interference!
+
+$start		= $monthstart;
+$numberdays	= gmdate("t", $start); // number of days in this month
+
+$text = "";
+$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_START, FALSE, $calendar_shortcodes);
+$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_HEADER_START, FALSE, $calendar_shortcodes);
+
+// Display the column headers
+for ($i = 0; $i < 7; $i++)
+{
+  $day = $ecal_class->day_offset_string($i);
+  $text .= $tp -> parseTemplate($CALENDAR_CALENDAR_HEADER, FALSE, $calendar_shortcodes);
+} 
+$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_HEADER_END, FALSE, $calendar_shortcodes);
+
+
+// Calculate number of days to skip before 'real' days on first line of calendar
+$firstdayoffset = gmdate('w',$start) - $ecal_class->ec_first_day_of_week;
+if ($firstdayoffset < 0) $firstdayoffset+= 7;
+
+for ($c=0; $c<$firstdayoffset; $c++) 
+{
+  $text .= $tp -> parseTemplate($CALENDAR_CALENDAR_DAY_NON, FALSE, $calendar_shortcodes);
+}
+
+$loop = $firstdayoffset;
+
+for ($c = 1; $c <= $numberdays; $c++)
+{	// Loop through the number of days in this month
+	$startt	= $start;			// Used by shortcodes - start of current day
+	$stopp	= $start + 86399;	// End of current day
+	$got_ev 	= array_key_exists($c, $events) && is_array($events[$c]) && count($events[$c]) > 0;		// Flag set if events today
+  
+   // Highlight the current day.
+    if ($nowday == $c && $month == $nowmonth && $year == $nowyear)
+    {      	//today
+	  $text .= $tp -> parseTemplate($CALENDAR_CALENDAR_DAY_TODAY, FALSE, $calendar_shortcodes);
+	}
+	elseif ($got_ev)
+	{	//day has events
+	  $text .= $tp -> parseTemplate($CALENDAR_CALENDAR_DAY_EVENT, FALSE, $calendar_shortcodes);
+    } 
+    else
+    {   // no events and not today
+	  $text .= $tp -> parseTemplate($CALENDAR_CALENDAR_DAY_EMPTY, FALSE, $calendar_shortcodes);
+    } 
+	if ($got_ev)
+	{
+		foreach($events[$c] as $ev)
+		{
+			if ($ev['startofevent'])
+			{
+			  $ev['indicat'] = '';
+			  $ev['imagesize'] = '8';
+			  $ev['fulltopic'] = TRUE;
+			}
+			else
+			{
+			  $ev['indicat'] = '';
+			  $ev['imagesize'] = '4';
+			  $ev['fulltopic'] = FALSE;
+			}
+			$text .= $tp -> parseTemplate($CALENDAR_SHOWEVENT, FALSE, $calendar_shortcodes);
+		} 
+	}
+	$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_DAY_END, FALSE, $calendar_shortcodes);
+
+	$loop++;
+	if ($loop == 7)
+	{
+		$loop = 0;
+		if($c != $numberdays)
+		{
+		  $text .= $tp -> parseTemplate($CALENDAR_CALENDAR_WEEKSWITCH, FALSE, $calendar_shortcodes);
+		}
+	}
+	$start += 86400;
+}
+
+//remainder cells to end the row properly with empty cells
+if($loop!=0)
+{
+	for ($c=$loop; $c<7; $c++) 
+	{
+		$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_DAY_NON, FALSE, $calendar_shortcodes);
+	}
+}
+$text .= $tp -> parseTemplate($CALENDAR_CALENDAR_END, FALSE, $calendar_shortcodes);
+
+$ns->tablerender(EC_LAN_79, $cal_text . $nav_text . $text);
+
+// Claim back memory from key variables
+unset($ev_list);
+unset($text);
+
+require_once(FOOTERF);
+
 ?>
\ No newline at end of file
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/calendar_shortcodes.php 1.0.4.src/e107_plugins/calendar_menu/calendar_shortcodes.php
--- 1.0.2.src/e107_plugins/calendar_menu/calendar_shortcodes.php	2013-10-11 14:02:27.334000028 -0500
+++ 1.0.4.src/e107_plugins/calendar_menu/calendar_shortcodes.php	2013-09-26 16:49:50.000000000 -0500
@@ -1,473 +1,818 @@
-<?php
-/*
-+ ----------------------------------------------------------------------------+
-|     e107 website system
-|
-|     Copyright (C) 2001-2002 Steve Dunstan (jalist@e107.org)
-|     Copyright (C) 2008-2010 e107 Inc (e107.org)
-|
-|
-|     Released under the terms and conditions of the
-|     GNU General Public License (http://gnu.org).
-|
-|     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/calendar_shortcodes.php $
-|     $Revision: 11915 $
-|     $Id: calendar_shortcodes.php 11915 2010-10-25 16:58:32Z e107steved $
-|     $Author: e107steved $
-|
-| 10.11.06 - mods for next CVS release
-+----------------------------------------------------------------------------+
-*/
-
-if (!defined('e107_INIT')) { exit; }
-include_once(e_HANDLER.'shortcode_handler.php');
-$calendar_shortcodes = $tp -> e_sc -> parse_scbatch(__FILE__);
-/*
-// TIME SWITCH BUTTONS ------------------------------------------------
-SC_BEGIN PREV_MONTH
-	global $PREV_MONTH, $previous, $months, $prevmonth;
-	return "<a href='".e_SELF."?".$previous."'>&lt;&lt; ".$months[($prevmonth-1)]."</a>";
-SC_END
-
-SC_BEGIN NEXT_MONTH
-	global $NEXT_MONTH, $next, $months, $nextmonth;
-	return "<a href='".e_SELF."?".$next."'> ".$months[($nextmonth-1)]." &gt;&gt;</a>";
-SC_END
-
-SC_BEGIN CURRENT_MONTH
-	global $CURRENT_MONTH, $pref, $months, $month, $year;
-	if($pref['eventpost_dateformat'] == 'my') {
-		$CURRENT_MONTH = $months[($month-1)]." ".$year;
-	} else {
-		$CURRENT_MONTH = $year." ".$months[($month-1)];
-	}
-	return $CURRENT_MONTH;
-SC_END
-
-SC_BEGIN PREV_YEAR
-	global $PREV_YEAR, $prevlink, $py;
-	return "<a href='".e_SELF."?".$prevlink."'>&lt;&lt; ".$py."</a>";
-SC_END
-
-SC_BEGIN NEXT_YEAR
-	global $NEXT_YEAR, $nextlink, $ny;
-	return "<a href='".e_SELF."?".$nextlink."'>".$ny." &gt;&gt;</a>";
-SC_END
-
-SC_BEGIN MONTH_LIST
-	global $MONTH_LIST, $year, $monthjump, $monthabb;
-	$MONTH_LIST = "";
-	for ($ii = 0; $ii < 12; $ii++)
-	{
-    	$m = $ii + 1;
-    	$monthjump = mktime(0, 0, 0, $m, 1, $year);
-		$MONTH_LIST .= "<a href='".e_SELF."?".$monthjump."'>".$monthabb[$ii]."</a> &nbsp;";
-	}
-	return $MONTH_LIST;
-SC_END
-
-
-
-// NAVIGATION BUTTONS ------------------------------------------------
-SC_BEGIN NAV_BUT_ALLEVENTS
-	global $NAV_BUT_ALLEVENTS;
-	$allevents = (e_PAGE == "event.php" ? EC_LAN_96 : EC_LAN_93);
-	return "<input class='button' type='submit' style='width:140px;' name='viewallevents' value='".$allevents."' title='".$allevents."' />";
-SC_END
-
-SC_BEGIN NAV_BUT_VIEWCAT
-	global $NAV_BUT_VIEWCAT;
-	//return "<input type='hidden' name='do' value='vc' /><input class='button' type='submit' style='width:140px;' name='viewcat' value='".EC_LAN_92."' />";
-	return "<input type='hidden' name='do' value='vc' />";
-SC_END
-
-SC_BEGIN NAV_BUT_SUBSCRIPTION
-	global $NAV_BUT_SUBSCRIPTION, $pref;
-	if (($pref['eventpost_asubs']>0) && USER)
-	{
-		$NAV_BUT_SUBSCRIPTION = "<input class='button' type='submit' style='width:140px;' name='subs' value='".EC_LAN_123."' />";
-	}
-	return $NAV_BUT_SUBSCRIPTION;
-SC_END
-
-SC_BEGIN NAV_BUT_ENTEREVENT
-		global $NAV_BUT_ENTEREVENT, $pref, $prop;
-	$NAV_BUT_ENTEREVENT = "<input type='hidden' name='enter_new_val' value='".$prop."' />";
-	if (check_class($pref['eventpost_admin']) || getperms('0')){
-    	// start no admin preference
-    	$NAV_BUT_ENTEREVENT .= "<input class='button' type='submit' style='width:140px;' name='doit' value='".EC_LAN_94."' />";
-	}
-	return $NAV_BUT_ENTEREVENT;
-SC_END
-
-SC_BEGIN NAV_LINKCURRENTMONTH
-	global $NAV_LINKCURRENTMONTH, $month, $nowmonth, $year, $nowyear, $current, $ds;
-	$NAV_LINKCURRENTMONTH = "";
-	if ($month != $nowmonth || $year != $nowyear || $ds == 'one'){
-		$NAV_LINKCURRENTMONTH = "<input class='button' type='button' style='width:140px;' name='cur' value='".EC_LAN_40."' onclick=\"javascript:document.location='".e_SELF."?$current'\" />";
-	}
-	return $NAV_LINKCURRENTMONTH;
-SC_END
-
-SC_BEGIN NAV_CATEGORIES
-	global $NAV_CATEGORIES, $sql, $pref, $_POST, $cal_super;
-	$NAV_CATEGORIES = "<select name='event_cat_ids' class='tbox' style='width:140px;' onchange='this.form.submit()' ><option class='tbox' value='all'>".EC_LAN_97."</option>";
-	$event_cat_id = ( isset($_POST['event_cat_ids']) && $_POST['event_cat_ids'] ? $_POST['event_cat_ids'] : null);
-
-	$cal_arg = ($cal_super ? "" : " find_in_set(event_cat_class,'".USERCLASS_LIST."') ");
-	$sql->db_Select("event_cat", "*", $cal_arg);
-	while ($row = $sql->db_Fetch()){
- 	   if ($row['event_cat_id'] == $event_cat_id){
- 	       $NAV_CATEGORIES .= "<option class='tbox' value='".$row['event_cat_id']."' selected='selected'>".$row['event_cat_name']."</option>";
-  	  }else{
-    	    $NAV_CATEGORIES .= "<option value='".$row['event_cat_id']."'>".$row['event_cat_name']."</option>";
-    	}
-	}
-	$NAV_CATEGORIES .= "</select>";
-	return $NAV_CATEGORIES;
-SC_END
-
-
-
-// CALENDAR SHOWEVENT ------------------------------------------------------------
-SC_BEGIN SHOWEVENT_IMAGE
-	global $SHOWEVENT_IMAGE, $ev;
-	$img = '';
-	if($ev['event_cat_icon'] && file_exists(e_PLUGIN."calendar_menu/images/".$ev['event_cat_icon']))
-	{
-	  $img = "<img style='border:0' src='".e_PLUGIN_ABS."calendar_menu/images/".$ev['event_cat_icon']."' alt='' height='".$ev['imagesize']."' width='".$ev['imagesize']."' />";
-	}
-	elseif(defined('BULLET'))
-	{
-		$img = '<img src="'.THEME.'images/'.BULLET.'" alt="" style="vertical-align: middle;" />';
-	}
-	elseif(file_exists(THEME.'images/bullet2.gif'))
-	{
-		$img = '<img src="'.THEME.'images/bullet2.gif" alt="" style="vertical-align: middle;" />';
-	}
-	return $img;
-	//return "<img style='border:0' src='".e_PLUGIN_ABS."calendar_menu/images/".$ev['event_cat_icon']."' alt='' height='".$ev['imagesize']."' width='".$ev['imagesize']."' />";
-SC_END
-
-SC_BEGIN SHOWEVENT_INDICAT
-	global $SHOWEVENT_INDICAT, $ev;
-	return $ev['indicat'];
-SC_END
-
-SC_BEGIN SHOWEVENT_HEADING
-	global $SHOWEVENT_HEADING, $ev, $datearray, $c, $tp;
-	$linkut = mktime(0 , 0 , 0 , $datearray['mon'], $c, $datearray['year']);
-	if(isset($ev['fulltopic']) && $ev['fulltopic'])
-	{  // Used on first day
-		$show_title = $ev['event_title'];
-	}
-	else
-	{
-	  $show_title = $tp->text_truncate($ev['event_title'], 10, "...");
-	}
-	if($ev['startofevent'])
-	{
-	    return "<b><a title='{$ev['event_title']}' href='".e_PLUGIN_ABS."calendar_menu/event.php?".$linkut.".event.".$ev['event_id']."'><span class='mediumtext'>".$show_title."</span></a></b>";
-	}
-	else
-	{
-	  return "<a title='{$ev['event_title']}' href='".e_PLUGIN_ABS."calendar_menu/event.php?".$linkut.".event.".$ev['event_id']."'><span class='smalltext'>".$show_title."</span></a>";
-	}
-SC_END
-
-SC_BEGIN CALENDAR_CALENDAR_RECENT_ICON
-  global $ev;
-  if (!isset($ev['is_recent'])) return "";
-//  $recent_icon = e_IMAGE_ABS."generic/".IMODE."/new.png";
-  if (file_exists(e_IMAGE."generic/".IMODE."/new.png"))
-	{
-	  return "<img style='border:0' src='".e_IMAGE_ABS."generic/".IMODE."/new.png"."' alt='' /> ";
-	}
-  return "R";
-SC_END
-
-
-
-// CALENDAR CALENDAR ------------------------------------------------------------
-SC_BEGIN CALENDAR_CALENDAR_HEADER_DAY
-	global $CALENDAR_CALENDAR_HEADER_DAY, $day, $pref, $week, $tp;
-	if(isset($pref['eventpost_lenday']) && $pref['eventpost_lenday'])
-	{
-	  return "<strong>".$tp->text_truncate($day,$pref['eventpost_lenday'],'')."</strong>";
-	}
-	else
-	{
- 	  return "<strong>".$day."</strong>";
-	}
-SC_END
-
-SC_BEGIN CALENDAR_CALENDAR_DAY_TODAY_HEADING
-	global $CALENDAR_CALENDAR_DAY_TODAY_HEADING, $startt, $c, $days;
-	return "<b><a href='".e_PLUGIN_ABS."calendar_menu/event.php?".$startt."'>".$days[($c-1)]."</a></b> <span class='smalltext'>[".EC_LAN_TODAY."]</span>";
-SC_END
-
-SC_BEGIN CALENDAR_CALENDAR_DAY_EVENT_HEADING
-	global $CALENDAR_CALENDAR_DAY_EVENT_HEADING, $startt, $c, $days;
-	return "<a href='".e_PLUGIN_ABS."calendar_menu/event.php?".$startt.".one'>".$days[($c-1)]."</a>";
-SC_END
-
-SC_BEGIN CALENDAR_CALENDAR_DAY_EMPTY_HEADING
-	global $CALENDAR_CALENDAR_DAY_EMPTY_HEADING, $startt, $c, $days;
-	return "<a href='".e_PLUGIN_ABS."calendar_menu/event.php?".$startt."'>".$days[($c-1)]."</a>";
-SC_END
-
-
-// EVENT LIST ------------------------------------------------
-SC_BEGIN EVENTLIST_CAPTION
-	global $EVENTLIST_CAPTION, $ds, $months, $selected_mon, $dayslo, $selected_day, $monthstart;
-	if ($ds == 'one')
-	{
-		$EVENTLIST_CAPTION = EC_LAN_111.$months[$selected_mon-1]." ".$selected_day;
-	}
-    elseif ($ds != 'event')
-    {
-		$EVENTLIST_CAPTION = EC_LAN_112.$months[date("m", $monthstart)-1];
-	}
-	return $EVENTLIST_CAPTION;
-SC_END
-
-
-
-// EVENT ARCHIVE ------------------------------------------------------------
-SC_BEGIN EVENTARCHIVE_CAPTION
-	global $EVENTARCHIVE_CAPTION, $num;
-	if ($num == 0) 
-	{
-		$EVENTARCHIVE_CAPTION = EC_LAN_137;
-	}
-	else
-	{
-		$EVENTARCHIVE_CAPTION = str_replace("-NUM-", $num, EC_LAN_62);
-	}
-	return $EVENTARCHIVE_CAPTION;
-SC_END
-
-SC_BEGIN EVENTARCHIVE_DATE
-	global $EVENTARCHIVE_DATE, $thisevent, $ecal_class;
-	$startds = $ecal_class->event_date_string($thisevent['event_start']);
-	$EVENTARCHIVE_DATE = "<a href='event.php?".$thisevent['event_start'].".event.".$thisevent['event_id']."'>".$startds."</a>";
-	return $EVENTARCHIVE_DATE;
-SC_END
-
-SC_BEGIN EVENTARCHIVE_DETAILS
-	global $EVENTARCHIVE_DETAILS, $thisevent, $tp;
-	$number = 40;
-	$rowtext = $tp->toHTML($thisevent['event_details'], TRUE, "nobreak");
-	$rowtext = strip_tags($rowtext);
-	$words = explode(" ", $rowtext);
-	$EVENTARCHIVE_DETAILS = implode(" ", array_slice($words, 0, $number));
-	if(count($words) > $number){
-		$EVENTARCHIVE_DETAILS .= " ".EC_LAN_133." ";
-	}
-	return $EVENTARCHIVE_DETAILS;
-SC_END
-
-SC_BEGIN EVENTARCHIVE_EMPTY
-	global $EVENTARCHIVE_EMPTY;
-	return EC_LAN_37;
-SC_END
-
-SC_BEGIN EVENTARCHIVE_HEADING
-	global $EVENTARCHIVE_HEADING, $thisevent;
-	$EVENTARCHIVE_HEADING = $thisevent['event_title'];
-	return $EVENTARCHIVE_HEADING;
-SC_END
-
-
-
-
-// EVENT SHOWEVENT ------------------------------------------------------------
-
-SC_BEGIN EVENT_RECENT_ICON
-  global $thisevent, $ecal_class;
-  if (($ecal_class->max_recent_show == 0) || (time() - $thisevent['event_datestamp']) > $ecal_class->max_recent_show) return "";
-// Can use the generic icon, or a calendar-specific one  
-//  $recent_icon = e_IMAGE."generic/".IMODE."/new.png";
-  if (file_exists(e_IMAGE."generic/".IMODE."/new.png"))
-	{
-	  return "<img style='border:0' src='".e_IMAGE_ABS."generic/".IMODE."/new.png"."' alt='' /> ";
-	}
-  return "";
-SC_END
-
-SC_BEGIN EVENT_HEADING_DATE
-	global $thisevent, $ecal_class;
-	$startds = $ecal_class->event_date_string($thisevent['event_start']);
-    return $startds;
-SC_END
-
-SC_BEGIN EVENT_DATE_START
-	global $thisevent, $ecal_class;
-	$startds = $ecal_class->event_date_string($thisevent['event_start']);
-    return $startds;
-SC_END
-
-SC_BEGIN EVENT_TIME_START
-	global $thisevent, $ecal_class;
-	if ($thisevent['event_allday'] == 1) return "";
-	$startds = $ecal_class->time_string($thisevent['event_start']);
-    return $startds;
-SC_END
-
-SC_BEGIN EVENT_DATE_END
-	global $thisevent, $ecal_class;
-	if ($thisevent['event_allday'] ||($thisevent['event_end'] == $thisevent['event_start'])) return "";
-	$endds = $ecal_class->event_date_string($thisevent['event_end']);
-	return $endds;
-SC_END
-
-SC_BEGIN EVENT_TIME_END
-	global $thisevent, $ecal_class;
-	if ($thisevent['event_allday'] ||($thisevent['event_end'] == $thisevent['event_start'])) return "";
-	$endds = $ecal_class->time_string($thisevent['event_end']);
-	return $endds;
-SC_END
-
-SC_BEGIN EVENT_TITLE
-	global $thisevent;
-	return $thisevent['event_title'];
-SC_END
-
-SC_BEGIN EVENT_CAT_ICON
-  global $thisevent;
-  if ($thisevent['event_cat_icon'] && file_exists(e_PLUGIN."calendar_menu/images/".$thisevent['event_cat_icon']))
-	{
-	  return "<img style='border:0' src='".e_PLUGIN_ABS."calendar_menu/images/".$thisevent['event_cat_icon']."' alt='' /> ";
-	}
-	else
-	{
-		return "";
-	}
-SC_END
-
-SC_BEGIN EVENT_ID
-	global $thisevent;
-	return "calevent".$thisevent['event_id'];
-SC_END
-
-SC_BEGIN EVENT_DISPLAYSTYLE
-	global $EVENT_DISPLAYSTYLE, $ds;
-	if (($ds=="event") || ($ds=="one")){
-		$EVENT_DISPLAYSTYLE = "show";
-	}else{
-		$EVENT_DISPLAYSTYLE = "none";
-	}
-	return $EVENT_DISPLAYSTYLE;
-SC_END
-
-SC_BEGIN EVENT_DETAILS
-	global $EVENT_DETAILS, $thisevent, $tp;
-	return $tp->toHTML($thisevent['event_details'], TRUE);
-SC_END
-
-SC_BEGIN EVENT_CATEGORY
-	global $EVENT_CATEGORY, $thisevent;
-		$EVENT_CATEGORY = $thisevent['event_cat_name'];
-	return $EVENT_CATEGORY;
-SC_END
-
-SC_BEGIN EVENT_LOCATION
-	global $EVENT_LOCATION, $thisevent;
-	if ($thisevent['event_location'] == ""){
-		$EVENT_LOCATION = "";
-	}else{
-		$EVENT_LOCATION = $thisevent['event_location'];
-	}
-	return $EVENT_LOCATION;
-SC_END
-
-SC_BEGIN EVENT_AUTHOR
-	global $EVENT_AUTHOR, $event_author_id, $event_author_name;
-	if(USER){
-		$EVENT_AUTHOR = "<a href='".e_BASE."user.php?id.".$event_author_id."'>".$event_author_name."</a>";
-	}else{
-		$EVENT_AUTHOR = $event_author_name;
-	}
-	return $EVENT_AUTHOR;
-SC_END
-
-SC_BEGIN EVENT_CONTACT
-	global $EVENT_CONTACT, $thisevent,$tp;
-	if ($thisevent['event_contact'] == ""){
-		//$EVENT_CONTACT = EC_LAN_38; // Not Specified ;
-	$EVENT_CONTACT = "";
-	}else{
-		$EVENT_CONTACT = $tp->toHTML($thisevent['event_contact'],TRUE);
-	}
-	return $EVENT_CONTACT;
-SC_END
-
-SC_BEGIN EVENT_THREAD
-  global $EVENT_THREAD, $thisevent;
-  return (isset($thisevent['event_thread']) && ($thisevent['event_thread'] != "")) ? "<a href='{$thisevent['event_thread']}'><img src='".e_PLUGIN_ABS."forum/images/".IMODE."/e.png' alt='' style='border:0; vertical-align:middle;' width='16' height='16' /></a> <a href='{$thisevent['event_thread']}'>".EC_LAN_39."</a>" : "";
-SC_END
-
-SC_BEGIN EVENT_OPTIONS
-	global $EVENT_OPTIONS, $thisevent, $event_author_name, $cal_super;
-	if (USERNAME == $event_author_name || $cal_super){
-		$EVENT_OPTIONS = "<a href='event.php?ed.".$thisevent['event_id']."'><img style='border:0;' src='".e_IMAGE_ABS."admin_images/edit_16.png' title='".EC_LAN_35."' alt='".EC_LAN_35 . "'/></a>&nbsp;&nbsp;<a href='".e_PLUGIN."calendar_menu/event.php?de.".$thisevent['event_id']."'><img style='border:0;' src='".e_IMAGE_ABS."admin_images/delete_16.png' title='".EC_LAN_36."' alt='".EC_LAN_36."'/></a>";
-	}
-	return $EVENT_OPTIONS;
-SC_END
-
-
-
-
-SC_BEGIN NEXT_EVENT_TIME
-  global $cal_row, $ecal_class;
-  if ($cal_row['event_allday'] != 1) return $ecal_class->time_string($cal_row['event_start']); else return '';
-SC_END
-
-SC_BEGIN NEXT_EVENT_DATE
-  global $cal_row, $ecal_class;
-  return $ecal_class->next_date_string($cal_row['event_start']);
-SC_END
-
-SC_BEGIN NEXT_EVENT_TITLE
-  global $pref, $cal_row;
-  if (isset($pref['eventpost_namelink']) && ($pref['eventpost_namelink'] == '2') && (isset($cal_row['event_thread']) && ($cal_row['event_thread'] != "")))
-	  {
-	    $fe_event_title = "<a href='".$cal_row['event_thread']."'>";
-	  }
-	  else
-	  { 
-	    $fe_event_title = "<a href='".e_PLUGIN."calendar_menu/event.php?".$cal_row['event_start'].".event.".$cal_row['event_id']."'>";
-	  }
-	$fe_event_title .= $cal_row['event_title']."</a>";
-  return $fe_event_title;
-SC_END
-
-SC_BEGIN NEXT_EVENT_ICON
-	global $pref, $cal_row, $ecal_dir;
-	$fe_icon_file = "";
-	if ($pref['eventpost_showcaticon'] == 1)
-	{
-		if($cal_row['event_cat_icon'] && file_exists($ecal_dir."images/".$cal_row['event_cat_icon']))
-		{
-			$fe_icon_file = $ecal_dir."images/".$cal_row['event_cat_icon'];
-		}
-		elseif(defined('BULLET'))
-		{
-			$fe_icon_file = THEME.'images/'.BULLET;
-		}
-		elseif(file_exists(THEME.'images/bullet2.gif'))
-		{
-			$fe_icon_file = THEME.'images/bullet2.gif';
-		}
-	}
-	return $fe_icon_file;
-SC_END
-
-SC_BEGIN NEXT_EVENT_GAP
-  global $cal_totev;
-  if ($cal_totev) return "<br /><br />"; else return "";
-SC_END
-
-
-*/
+<?php
+/*
+ * e107 website system
+ *
+ * Copyright (C) 2002-2012 e107 Inc (e107.org)
+ * Released under the terms and conditions of the
+ * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
+ *
+ * Event calendar - event entry and display
+ *
+ * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/calendar_shortcodes.php $
+ * $Id: calendar_shortcodes.php 13095 2013-04-11 19:47:45Z e107steved $
+ */
+
+
+if (!defined('e107_INIT')) { exit; }
+include_once(e_HANDLER.'shortcode_handler.php');
+$calendar_shortcodes = $tp -> e_sc -> parse_scbatch(__FILE__);
+/*
+// TIME SWITCH BUTTONS ------------------------------------------------
+SC_BEGIN EC_PREV_MONTH
+	global $previous, $months, $prevmonth;
+	return "<a href='".e_SELF."?".$previous."'>&lt;&lt; ".$months[($prevmonth-1)]."</a>";
+SC_END
+
+SC_BEGIN EC_NEXT_MONTH
+	global $next, $months, $nextmonth;
+	return "<a href='".e_SELF."?".$next."'> ".$months[($nextmonth-1)]." &gt;&gt;</a>";
+SC_END
+
+SC_BEGIN EC_CURRENT_MONTH
+	global $EC_CURRENT_MONTH, $pref, $months, $month, $year;
+	if($pref['eventpost_dateformat'] == 'my') 
+	{
+	  $EC_CURRENT_MONTH = $months[($month-1)]." ".$year;
+	} 
+	else 
+	{
+	  $EC_CURRENT_MONTH = $year." ".$months[($month-1)];
+	}
+	return $EC_CURRENT_MONTH;
+SC_END
+
+SC_BEGIN EC_PREV_YEAR
+	global $prevlink, $py;
+	return "<a href='".e_SELF."?".$prevlink."'>&lt;&lt; ".$py."</a>";
+SC_END
+
+SC_BEGIN EC_NEXT_YEAR
+	global $nextlink, $ny;
+	return "<a href='".e_SELF."?".$nextlink."'>".$ny." &gt;&gt;</a>";
+SC_END
+
+SC_BEGIN EC_MONTH_LIST
+	global $EC_MONTH_LIST, $year, $monthjump, $monthabb;
+	$EC_MONTH_LIST = "";
+	for ($ii = 0; $ii < 12; $ii++)
+	{
+    	$m = $ii + 1;
+    	$monthjump = gmmktime(0, 0, 0, $m, 1, $year);
+		$EC_MONTH_LIST .= "<a href='".e_SELF."?".$monthjump."'>".$monthabb[$ii]."</a> &nbsp;";
+	}
+	return $EC_MONTH_LIST;
+SC_END
+
+
+
+// NAVIGATION BUTTONS ------------------------------------------------
+SC_BEGIN EC_NAV_BUT_ALLEVENTS
+	$allevents = (e_PAGE == "event.php" ? EC_LAN_96 : EC_LAN_93);
+	return "<input class='button' type='submit' style='width:140px;' name='viewallevents' value='".$allevents."' title='".$allevents."' />";
+SC_END
+
+SC_BEGIN EC_NAV_BUT_VIEWCAT
+	//return "<input type='hidden' name='do' value='vc' /><input class='button' type='submit' style='width:140px;' name='viewcat' value='".EC_LAN_92."' />";
+	return "<input type='hidden' name='do' value='vc' />";
+SC_END
+
+SC_BEGIN EC_NAV_BUT_SUBSCRIPTION
+	global $pref;
+	if (isset($pref['eventpost_asubs']) && ($pref['eventpost_asubs']>0) && USER)
+	{
+	  return "<input class='button' type='submit' style='width:140px;' name='subs' value='".EC_LAN_123."' />";
+	}
+SC_END
+
+SC_BEGIN EC_NAV_BUT_PRINTLISTS
+	global $pref;
+	if (isset($pref['eventpost_printlists']) && ($pref['eventpost_printlists']>0) && USER)
+	{
+	  return "<input class='button' type='submit' style='width:140px;' name='printlists' value='".EC_LAN_164."' />";
+	}
+SC_END
+
+SC_BEGIN EC_NAV_BUT_ENTEREVENT
+	global $EC_NAV_BUT_ENTEREVENT, $pref, $prop, $cal_super;
+	$EC_NAV_BUT_ENTEREVENT = "<input type='hidden' name='enter_new_val' value='".$prop."' />";
+	if ($cal_super || check_class($pref['eventpost_admin']))
+	{
+    	$EC_NAV_BUT_ENTEREVENT .= "<input class='button' type='submit' style='width:140px;' name='doit' value='".EC_LAN_94."' />";
+	}
+	return $EC_NAV_BUT_ENTEREVENT;
+SC_END
+
+SC_BEGIN EC_NAV_LINKCURRENTMONTH
+	global $EC_NAV_LINKCURRENTMONTH, $month, $nowmonth, $year, $nowyear, $current, $ds;
+	$EC_NAV_LINKCURRENTMONTH = "";
+	if ($month != $nowmonth || $year != $nowyear || $ds == 'one'){
+		$EC_NAV_LINKCURRENTMONTH = "<input class='button' type='button' style='width:140px;' name='cur' value='".EC_LAN_40."' onclick=\"javascript:document.location='".e_SELF."?$current'\" />";
+	}
+	return $EC_NAV_LINKCURRENTMONTH;
+SC_END
+
+SC_BEGIN EC_NAV_CATEGORIES
+	global $EC_NAV_CATEGORIES, $sql, $pref, $_POST, $cal_super, $cat_filter;
+	(isset($parm) && ($parm == 'nosubmit')) ? $insert = '' : $insert = "onchange='this.form.submit()'";
+	$EC_NAV_CATEGORIES = "<select name='event_cat_ids' class='tbox' style='width:140px;' {$insert} >\n<option value='all'>".EC_LAN_97."</option>\n";
+	$event_cat_id = ( isset($_POST['event_cat_ids']) && $_POST['event_cat_ids'] ? $_POST['event_cat_ids'] : null);
+
+	$cal_arg = ($cal_super ? "" : " find_in_set(event_cat_class,'".USERCLASS_LIST."') AND ");
+	$cal_arg .= "(event_cat_name != '".EC_DEFAULT_CATEGORY."') ";
+	$sql->db_Select("event_cat", "*", $cal_arg);
+	while ($row = $sql->db_Fetch()){
+ 	   if ($row['event_cat_id'] == $cat_filter){
+ 	       $EC_NAV_CATEGORIES .= "<option class='tbox' value='".$row['event_cat_id']."' selected='selected'>".$row['event_cat_name']."</option>\n";
+  	  }else{
+    	    $EC_NAV_CATEGORIES .= "<option value='".$row['event_cat_id']."'>".$row['event_cat_name']."</option>\n";
+    	}
+	}
+	$EC_NAV_CATEGORIES .= "</select>\n";
+	return $EC_NAV_CATEGORIES;
+SC_END
+
+
+
+// CALENDAR SHOWEVENT ------------------------------------------------------------
+SC_BEGIN EC_SHOWEVENT_IMAGE
+	global $ev;
+	if($ev['event_cat_icon'] && file_exists(e_PLUGIN."calendar_menu/images/".$ev['event_cat_icon']))
+	{
+	  $img = "<img style='border:0' src='".e_PLUGIN."calendar_menu/images/".$ev['event_cat_icon']."' alt='' height='".$ev['imagesize']."' width='".$ev['imagesize']."' />";
+	}
+	else
+	{
+		$img = "<img src='".THEME."images/".(defined("BULLET") ? BULLET : "bullet2.gif")."' alt='' style='border:0; vertical-align:middle;' />";
+	}
+	return $img;
+SC_END
+
+SC_BEGIN EC_SHOWEVENT_INDICAT
+	global $ev;
+	return $ev['indicat'];
+SC_END
+
+SC_BEGIN EC_SHOWEVENT_HEADING
+	global $ev, $datearray, $c, $tp;
+	$linkut = mktime(0 , 0 , 0 , $datearray['mon'], $c, $datearray['year']);
+	$show_title = $tp->toHTML($ev['event_title'],FALSE,'TITLE');	// Remove entities in case need to truncate
+	if(isset($ev['fulltopic']) && !$ev['fulltopic'])
+	{
+	  $show_title = $tp->text_truncate($show_title, 10, "...");
+	}
+	if($ev['startofevent'])
+	{
+	  return "<b><a title='{$ev['event_title']}' href='".e_PLUGIN."calendar_menu/event.php?".$linkut.".event.".$ev['event_id']."'><span class='mediumtext'>".$show_title."</span></a></b>";
+	}
+	else
+	{
+	  return "<a title='{$ev['event_title']}' href='".e_PLUGIN."calendar_menu/event.php?".$linkut.".event.".$ev['event_id']."'><span class='smalltext'>".$show_title."</span></a>";
+	}
+SC_END
+
+
+
+//------------------------------------------
+// CALENDAR CALENDAR - 'Big' calendar
+//------------------------------------------
+SC_BEGIN EC_CALENDAR_CALENDAR_HEADER_DAY
+	global $day, $pref, $tp;
+	if(isset($pref['eventpost_lenday']) && $pref['eventpost_lenday'])
+	{
+	  return "<strong>".$tp->text_truncate($day,$pref['eventpost_lenday'],'')."</strong>";
+	}
+	else
+	{
+ 	  return "<strong>".$day."</strong>";
+	}
+SC_END
+
+SC_BEGIN EC_CALENDAR_CALENDAR_DAY_TODAY_HEADING
+	global $startt, $c, $days;
+	return "<b><a href='".e_PLUGIN."calendar_menu/event.php?".$startt."'>".$days[($c-1)]."</a></b> <span class='smalltext'>[".EC_LAN_TODAY."]</span>";
+SC_END
+
+SC_BEGIN EC_CALENDAR_CALENDAR_DAY_EVENT_HEADING
+	global $startt, $c, $days;
+	return "<a href='".e_PLUGIN."calendar_menu/event.php?".$startt.".one'>".$days[($c-1)]."</a>";
+SC_END
+
+SC_BEGIN EC_CALENDAR_CALENDAR_DAY_EMPTY_HEADING
+	global $startt, $c, $days;
+	return "<a href='".e_PLUGIN."calendar_menu/event.php?".$startt."'>".$days[($c-1)]."</a>";
+SC_END
+
+SC_BEGIN EC_CALENDAR_CALENDAR_RECENT_ICON
+  global $ev;
+  if (!isset($ev['is_recent'])) return "";
+  if (!$ev['startofevent']) return "";		// Only display on first day of multi-day events
+//  $recent_icon = e_PLUGIN."calendar_menu/images/recent_icon.png";
+  $recent_icon = EC_RECENT_ICON;
+  if (file_exists($recent_icon))
+	{
+	  return "<img style='border:0' src='".$recent_icon."' alt='' /> ";
+	}
+  return "R";
+SC_END
+
+
+
+//------------------------------------------
+// EVENT ARCHIVE (list of next events at bottom of event list)
+//------------------------------------------
+SC_BEGIN EC_EVENTARCHIVE_CAPTION
+	global $EC_EVENTARCHIVE_CAPTION, $num;
+	if ($num == 0) 
+	{
+		$EC_EVENTARCHIVE_CAPTION = EC_LAN_137;
+	}
+	else
+	{
+		$EC_EVENTARCHIVE_CAPTION = str_replace("-NUM-", $num, EC_LAN_62);
+	}
+	return $EC_EVENTARCHIVE_CAPTION;
+SC_END
+
+SC_BEGIN EC_EVENTARCHIVE_DATE
+	global $EC_EVENTARCHIVE_DATE, $thisevent, $ecal_class;
+	$startds = $ecal_class->event_date_string($thisevent['event_start']);
+	$EC_EVENTARCHIVE_DATE = "<a href='event.php?".$thisevent['event_start'].".event.".$thisevent['event_id']."'>".$startds."</a>";
+	return $EC_EVENTARCHIVE_DATE;
+SC_END
+
+SC_BEGIN EC_EVENTARCHIVE_DETAILS
+	global $EC_EVENTARCHIVE_DETAILS, $thisevent, $tp;
+	$number = 40;
+	$rowtext = $tp->toHTML($thisevent['event_details'], TRUE, "nobreak");
+	$rowtext = strip_tags($rowtext);
+	$words = explode(" ", $rowtext);
+	$EC_EVENTARCHIVE_DETAILS = implode(" ", array_slice($words, 0, $number));
+	if(count($words) > $number){
+		$EC_EVENTARCHIVE_DETAILS .= " ".EC_LAN_133." ";
+	}
+	return $EC_EVENTARCHIVE_DETAILS;
+SC_END
+
+SC_BEGIN EC_EVENTARCHIVE_EMPTY
+	global $EC_EVENTARCHIVE_EMPTY;
+	return EC_LAN_37;
+SC_END
+
+SC_BEGIN EC_EVENTARCHIVE_HEADING
+	global $EC_EVENTARCHIVE_HEADING, $thisevent;
+	$EC_EVENTARCHIVE_HEADING = $thisevent['event_title'];
+	return $EC_EVENTARCHIVE_HEADING;
+SC_END
+
+
+
+//------------------------------------------
+// 				EVENT LIST
+//------------------------------------------
+SC_BEGIN EC_EVENTLIST_CAPTION
+	global $EC_EVENTLIST_CAPTION, $ds, $months, $selected_mon, $selected_day, $monthstart;
+	if ($ds == 'one')
+	{
+		$EC_EVENTLIST_CAPTION = EC_LAN_111.$months[$selected_mon-1]." ".$selected_day;
+	}
+    elseif ($ds != 'event')
+    {
+		$EC_EVENTLIST_CAPTION = EC_LAN_112.$months[gmdate("m", $monthstart)-1];
+	}
+	return $EC_EVENTLIST_CAPTION;
+SC_END
+
+
+//------------------------------------------
+// 	EVENT SHOWEVENT (Detail of individual events in Event List)
+//------------------------------------------
+// Some of these shortcodes also used by big calendar
+
+SC_BEGIN EC_EVENT_RECENT_ICON
+  global $thisevent;
+  if (!isset($thisevent['is_recent'])) return;
+  $recent_icon = EC_RECENT_ICON;
+  if (file_exists($recent_icon))
+  {
+	return "<img style='border:0' src='".$recent_icon."' alt='' /> ";
+  }
+  return "";
+SC_END
+
+SC_BEGIN EC_EVENT_HEADING_DATE
+	global $thisevent, $ecal_class;
+	$startds = $ecal_class->event_date_string($thisevent['event_start']);
+    return $startds;
+SC_END
+
+SC_BEGIN EC_EVENT_DATE_START
+	global $thisevent, $ecal_class;
+	$startds = $ecal_class->event_date_string($thisevent['event_start']);
+    return $startds;
+SC_END
+
+SC_BEGIN EC_EVENT_TIME_START
+	global $thisevent, $ecal_class;
+	if ($thisevent['event_allday'] == 1) return "";
+	$startds = $ecal_class->time_string($thisevent['event_start']);
+    return $startds;
+SC_END
+
+SC_BEGIN EC_EVENT_DATE_END
+	global $thisevent, $ecal_class;
+//	if (intval($thisevent['event_end']/86400) == intval($thisevent['event_start']/86400)) return "";  // No end date if same day
+//	if ($thisevent['event_allday'] ||($thisevent['event_end'] == $thisevent['event_start'])) return "";
+	if ($thisevent['event_end'] == $thisevent['event_start']) return "";
+	$endds = $ecal_class->event_date_string($thisevent['event_end']);
+	return $endds;
+SC_END
+
+SC_BEGIN EC_EVENT_TIME_END
+	global $thisevent, $ecal_class;
+	if ($thisevent['event_allday'] ||($thisevent['event_end'] == $thisevent['event_start'])) return "";
+	$endds = $ecal_class->time_string($thisevent['event_end']);
+	return $endds;
+SC_END
+
+SC_BEGIN EC_EVENT_TITLE
+	global $thisevent, $tp;
+	return $thisevent['event_title'];
+SC_END
+
+SC_BEGIN EC_EVENT_CAT_ICON
+  global $thisevent;
+  if ($thisevent['event_cat_icon'] && file_exists(e_PLUGIN."calendar_menu/images/".$thisevent['event_cat_icon']))
+  {
+	return "<img style='border:0' src='".e_PLUGIN."calendar_menu/images/".$thisevent['event_cat_icon']."' alt='' /> ";
+  }
+  else
+  {
+	return "";
+  }
+SC_END
+
+SC_BEGIN EC_EVENT_ID
+	global $thisevent;
+	return "calevent".$thisevent['event_id'];
+SC_END
+
+SC_BEGIN EC_EVENT_DISPLAYSTYLE
+	global $EC_EVENT_DISPLAYSTYLE, $ds;
+	if (($ds=="event") || ($ds=="one"))
+	{
+	  $EC_EVENT_DISPLAYSTYLE = "";	// Show event (expanded)
+	}
+	else
+	{
+	  $EC_EVENT_DISPLAYSTYLE = "display:none";
+	}
+	return $EC_EVENT_DISPLAYSTYLE;
+SC_END
+
+SC_BEGIN EC_EVENT_DETAILS
+	global $thisevent, $tp;
+	return $tp->toHTML($thisevent['event_details'], TRUE, 'BODY');
+SC_END
+
+SC_BEGIN EC_EVENT_CATEGORY
+	global $EC_EVENT_CATEGORY, $thisevent;
+	$EC_EVENT_CATEGORY = $thisevent['event_cat_name'];
+	return $EC_EVENT_CATEGORY;
+SC_END
+
+SC_BEGIN EC_EVENT_LOCATION
+	global $EC_EVENT_LOCATION, $thisevent;
+	if ($thisevent['event_location'] == "")
+	{
+	  $EC_EVENT_LOCATION = "";
+	}
+	else
+	{
+	  $EC_EVENT_LOCATION = $thisevent['event_location'];
+	}
+	return $EC_EVENT_LOCATION;
+SC_END
+
+SC_BEGIN EC_EVENT_AUTHOR
+	global $thisevent;
+    $lp = explode(".", $thisevent['event_author'],2);
+    if (preg_match("/[0-9]+/", $lp[0]))
+    {
+      $event_author_id = $lp[0];
+      $event_author_name = $lp[1];
+    }
+	if(USER)
+	{
+	  $EC_EVENT_AUTHOR = "<a href='".e_BASE."user.php?id.".$event_author_id."'>".$event_author_name."</a>";
+	}
+	else
+	{
+	  $EC_EVENT_AUTHOR = $event_author_name;
+	}
+	return $EC_EVENT_AUTHOR;
+SC_END
+
+SC_BEGIN EC_EVENT_CONTACT
+	global $EC_EVENT_CONTACT, $thisevent,$tp;
+	if ($thisevent['event_contact'] == "")
+	{
+	  $EC_EVENT_CONTACT = "";
+	}
+	else
+	{
+	  $tm = $thisevent['event_contact'];
+	  if (strpos($tm,'[') === FALSE)
+	  {
+	    $tm = '[link=mailto:'.trim($tm).']'.substr($tm,0,strpos($tm,'@')).'[/link]';
+	  }
+	  $EC_EVENT_CONTACT = $tp->toHTML($tm,TRUE,'LINKTEXT');
+	}
+	return $EC_EVENT_CONTACT;
+SC_END
+
+SC_BEGIN EC_EVENT_THREAD
+  global  $thisevent, $ec_images_path;
+  return (isset($thisevent['event_thread']) && ($thisevent['event_thread'] != "")) ? "<a href='{$thisevent['event_thread']}'><img src='".$ec_images_path."admin_images/forums_32.png' alt='' style='border:0; vertical-align:middle;' width='16' height='16' /></a> <a href='{$thisevent['event_thread']}'>".EC_LAN_39."</a>" : "";
+SC_END
+
+SC_BEGIN EC_EVENT_OPTIONS
+	global $EC_EVENT_OPTIONS, $thisevent, $event_author_name, $cal_super, $pref, $ec_images_path;
+	if (USERNAME == $event_author_name || $cal_super || check_class($pref['eventpost_admin']))
+	{
+	  $EC_EVENT_OPTIONS = "<a href='event.php?ed.".$thisevent['event_id']."'><img style='border:0;' src='".e_IMAGE."admin_images/edit_16.png' title='".EC_LAN_35."' alt='".EC_LAN_35 . "'/></a>&nbsp;&nbsp;<a href='".e_PLUGIN."calendar_menu/event.php?de.".$thisevent['event_id']."'><img style='border:0;' src='".e_IMAGE."admin_images/delete_16.png' title='".EC_LAN_36."' alt='".EC_LAN_36."'/></a>";
+	}
+	return $EC_EVENT_OPTIONS;
+SC_END
+
+SC_BEGIN EC_EC_EVENT_LINK
+  global $thisevent, $PLUGINS_DIRECTORY;
+  $cal_dayarray = getdate($thisevent['event_start']);
+  $cal_linkut = mktime(0 , 0 , 0 , $cal_dayarray['mon'], $cal_dayarray['mday'], $cal_dayarray['year']).".one";  // ALways need "one"
+//  return " ".SITEURL.$PLUGINS_DIRECTORY. "calendar_menu/event.php?".$cal_linkut." ";
+  return " ".$pref['siteurl'].$PLUGINS_DIRECTORY. "calendar_menu/event.php?".$cal_linkut." ";
+SC_END
+
+
+SC_BEGIN EC_EVENT_EVENT_DATE_TIME
+  global $thisevent, $tp, $EVENT_EVENT_DATETIME;
+  $et = 0;
+  if (intval($thisevent['event_end']/86400) == intval($thisevent['event_start']/86400)) $et += 1;
+  if ($thisevent['event_allday']) $et += 2;
+  return $tp->parseTemplate($EVENT_EVENT_DATETIME[$et]);
+SC_END
+
+
+SC_BEGIN EC_EVENT_SHORT_DATE
+  global $thisevent, $ecal_class;
+  return $ecal_class->next_date_string($thisevent['event_start']);
+SC_END
+
+
+SC_BEGIN EC_IFNOT_ALLDAY
+  global $thisevent, $tp;
+  if ($thisevent['event_allday']) return;
+  if (trim($parm) == "") return;
+  return $tp->parseTemplate('{'.$parm.'}');
+SC_END
+
+SC_BEGIN EC_IF_ALLDAY
+  global $thisevent, $tp;
+  if (!$thisevent['event_allday']) return;
+  if (trim($parm) == "") return;
+  return $tp->parseTemplate('{'.$parm.'}');
+SC_END
+
+
+SC_BEGIN EC_IFNOT_SAMEDAY
+  global $thisevent, $tp;
+  if (intval($thisevent['event_end']/86400) == intval($thisevent['event_start']/86400)) return "";
+  if (!$thisevent['event_allday']) return;
+  if (trim($parm) == "") return;
+  return $tp->parseTemplate('{'.$parm.'}');
+SC_END
+
+SC_BEGIN EC_IF_SAMEDAY
+  global $thisevent, $tp;
+  if (intval($thisevent['event_end']/86400) != intval($thisevent['event_start']/86400)) return "";
+  if (!$thisevent['event_allday']) return;
+  if (trim($parm) == "") return;
+  return $tp->parseTemplate('{'.$parm.'}');
+SC_END
+
+
+//   FORTHCOMING EVENTS MENU
+//--------------------------------------------
+
+SC_BEGIN EC_NEXT_EVENT_RECENT_ICON
+  global $cal_row;
+  if (!$pref['eventpost_fe_showrecent']) return;
+  if (!isset($cal_row['is_recent'])) return;
+  $recent_icon = EC_RECENT_ICON;
+  if (file_exists($recent_icon))
+	{
+	  return "<img style='border:0' src='".$recent_icon."' alt='' /> ";
+	}
+  return "";
+SC_END
+
+SC_BEGIN EC_NEXT_EVENT_TIME
+  global $cal_row, $ecal_class;
+  if ($cal_row['event_allday'] != 1) return $ecal_class->time_string($cal_row['event_start']); else return '';
+SC_END
+
+SC_BEGIN EC_NEXT_EVENT_DATE
+  global $cal_row, $ecal_class;
+  return $ecal_class->next_date_string($cal_row['event_start']);
+SC_END
+
+SC_BEGIN EC_NEXT_EVENT_TITLE
+  global $pref, $cal_row;
+  if (isset($pref['eventpost_namelink']) && ($pref['eventpost_namelink'] == '2') && (isset($cal_row['event_thread']) && ($cal_row['event_thread'] != "")))
+  {
+    $fe_event_title = "<a href='".$cal_row['event_thread']."'>";
+  }
+  else
+  { 
+    $fe_event_title = "<a href='".e_PLUGIN."calendar_menu/event.php?".$cal_row['event_start'].".event.".$cal_row['event_id']."'>";
+  }
+  $fe_event_title .= $cal_row['event_title']."</a>";
+  return $fe_event_title;
+SC_END
+
+SC_BEGIN EC_NEXT_EVENT_ICON
+  global $pref, $cal_row;
+  $fe_icon_file = "";
+  if ($pref['eventpost_showcaticon'] == 1)
+  {
+	if($cal_row['event_cat_icon'] && file_exists(e_PLUGIN."calendar_menu/images/".$cal_row['event_cat_icon']))
+	{
+	  $fe_icon_file = e_PLUGIN_ABS."calendar_menu/images/".$cal_row['event_cat_icon'];
+	}
+	else
+	{
+	  $fe_icon_file = THEME_ABS."images/".(defined("BULLET") ? BULLET : "bullet2.gif");
+	}
+  }
+  return $fe_icon_file;
+SC_END
+
+SC_BEGIN EC_NEXT_EVENT_GAP
+  global $cal_totev;
+  if ($cal_totev) return "<br /><br />"; else return "";
+SC_END
+
+
+// Event mailout shortcodes
+//--------------------------
+SC_BEGIN EC_MAIL_HEADING_DATE
+	global $thisevent, $ecal_class;
+  if (isset($parm) && ($parm !== ""))
+  {
+    return strftime($parm,$thisevent['event_start']);
+  }
+  else
+  {
+    return $ecal_class->event_date_string($thisevent['event_start']);
+  }
+SC_END
+
+SC_BEGIN EC_MAIL_DATE_START
+	global $thisevent, $ecal_class;
+  if (isset($parm) && ($parm !== ""))
+  {
+    return strftime($parm,$thisevent['event_start']);
+  }
+  else
+  {
+    return $ecal_class->event_date_string($thisevent['event_start']);
+  }
+SC_END
+
+SC_BEGIN EC_MAIL_TIME_START
+	global $thisevent, $ecal_class;
+	if ($thisevent['event_allday'] == 1) return "";
+	$startds = $ecal_class->time_string($thisevent['event_start']);
+    return $startds;
+SC_END
+
+SC_BEGIN EC_MAIL_DATE_END
+	global $thisevent, $ecal_class;
+	if ($thisevent['event_allday'] ||($thisevent['event_end'] == $thisevent['event_start'])) return "";
+  if (isset($parm) && ($parm !== ""))
+  {
+    return strftime($parm,$thisevent['event_end']);
+  }
+  else
+  {
+    return $ecal_class->event_date_string($thisevent['event_end']);
+  }
+SC_END
+
+SC_BEGIN EC_MAIL_TIME_END
+	global $thisevent, $ecal_class;
+	if ($thisevent['event_allday'] ||($thisevent['event_end'] == $thisevent['event_start'])) return "";
+	$endds = $ecal_class->time_string($thisevent['event_end']);
+	return $endds;
+SC_END
+
+SC_BEGIN EC_MAIL_TITLE
+	global $thisevent;
+	return $thisevent['event_title'];
+SC_END
+
+
+SC_BEGIN EC_MAIL_ID
+	global $thisevent;
+	return "calevent".$thisevent['event_id'];
+SC_END
+
+
+SC_BEGIN EC_MAIL_DETAILS
+	global $EVENT_DETAILS, $thisevent, $tp;
+	return $tp->toHTML($thisevent['event_details'], TRUE,'BODY, no_make_clickable');
+SC_END
+
+
+SC_BEGIN EC_MAIL_CATEGORY
+	global $EVENT_CATEGORY, $thisevent;
+	$EVENT_CATEGORY = $thisevent['event_cat_name'];
+	return $EVENT_CATEGORY;
+SC_END
+
+SC_BEGIN EC_MAIL_LOCATION
+	global $EVENT_LOCATION, $thisevent;
+	if ($thisevent['event_location'] == "")
+	{
+	  $EVENT_LOCATION = "";
+	}
+	else
+	{
+	  $EVENT_LOCATION = $thisevent['event_location'];
+	}
+	return $EVENT_LOCATION;
+SC_END
+
+
+SC_BEGIN EC_MAIL_CONTACT
+	global $MAIL_CONTACT, $thisevent,$tp;
+	if ($thisevent['event_contact'] == "")
+	{
+	  $MAIL_CONTACT = "";
+	}
+	else
+	{
+	  $MAIL_CONTACT = $tp->toHTML($thisevent['event_contact'],TRUE,"LINKTEXT");
+	}
+	return $MAIL_CONTACT;
+SC_END
+
+SC_BEGIN EC_MAIL_THREAD
+  global $thisevent;
+  return (isset($thisevent['event_thread']) && ($thisevent['event_thread'] != "")) ? $thisevent['event_thread'] : "";
+SC_END
+
+SC_BEGIN EC_MAIL_LINK
+  global $thisevent, $PLUGINS_DIRECTORY, $pref;
+  $cal_dayarray = getdate($thisevent['event_start']);
+  $cal_linkut = mktime(0 , 0 , 0 , $cal_dayarray['mon'], $cal_dayarray['mday'], $cal_dayarray['year']).".one";  // ALways need "one"
+//  return " ".SITEURL.$PLUGINS_DIRECTORY. "calendar_menu/event.php?".$cal_linkut." ";
+  return " ".$pref['siteurl'].$PLUGINS_DIRECTORY. "calendar_menu/event.php?".$cal_linkut." ";
+SC_END
+
+
+SC_BEGIN EC_MAIL_SHORT_DATE
+  global $thisevent, $ecal_class;
+  return $ecal_class->next_date_string($thisevent['event_start']);
+SC_END
+
+// Codes can be used to return a LAN to help with multi-language
+SC_BEGIN EC_MAIL_SUBJECT
+  return EC_MAILOUT_SUBJECT;
+SC_END
+
+
+// Specific to the 'listings' page
+//--------------------------------
+SC_BEGIN EC_PR_LIST_TITLE
+  global $ec_list_title;
+  return $ec_list_title;
+SC_END
+
+
+SC_BEGIN EC_PR_CAT_LIST
+  global $ec_category_list;
+  if (is_array($ec_category_list))
+    return implode(", ",$ec_category_list);
+  else
+    return $ec_category_list;
+SC_END
+
+
+SC_BEGIN EC_PR_CHANGE_YEAR
+  global $ec_year_change, $thisevent_start_date;
+  if ($ec_year_change) return $thisevent_start_date['year']; 
+SC_END
+
+
+SC_BEGIN EC_PR_CHANGE_MONTH
+  global $ec_month_change, $thisevent_start_date;
+  if ($ec_month_change) return $thisevent_start_date['month']; 
+SC_END
+
+
+SC_BEGIN EC_PR_LIST_START
+  global $ecal_class, $ec_start_date;
+  if (isset($parm) && ($parm !== ""))
+  {
+    return strftime($parm,$ec_start_date);
+  }
+  else
+  {
+    return $ecal_class->event_date_string($ec_start_date);
+  }
+SC_END
+
+
+SC_BEGIN EC_PR_LIST_END
+  global $ecal_class, $ec_end_date;
+  if (isset($parm) && ($parm !== ""))
+    return strftime($parm,$ec_end_date);
+  else
+    return $ecal_class->event_date_string($ec_end_date);
+SC_END
+
+
+SC_BEGIN EC_NOW_DATE
+  global $ecal_class;
+  if (isset($parm) && ($parm !== ""))
+    return strftime($parm,time());
+  else
+    return $ecal_class->event_date_string(time());
+SC_END
+
+
+SC_BEGIN EC_NOW_TIME
+  global $ecal_class;
+  if (isset($parm) && ($parm !== ""))
+    return strftime($parm,time());
+  else
+    return $ecal_class->time_string(time());
+SC_END
+
+
+SC_BEGIN EC_PRINT_BUTTON
+  global $ec_output_type;
+  if ($ec_output_type != 'print') return;
+  return "<input type='button' value='".EC_LAN_162."' onClick='window.print()' />";
+SC_END
+
+
+SC_BEGIN EC_IF_PRINT
+  global $ec_output_type, $tp;
+  if ($ec_output_type != 'print') return;
+  if (trim($parm) == "") return;
+  return $tp->parseTemplate('{'.$parm.'}');
+SC_END
+
+SC_BEGIN EC_IFNOT_PRINT
+  global $ec_output_type, $tp;
+  if ($ec_output_type == 'print') return;
+  if (trim($parm) == "") return;
+  return $tp->parseTemplate('{'.$parm.'}');
+SC_END
+
+SC_BEGIN EC_IF_DISPLAY
+  global $ec_output_type, $tp;
+  if ($ec_output_type != 'display') return;
+  if (trim($parm) == "") return;
+  return $tp->parseTemplate('{'.$parm.'}');
+SC_END
+
+SC_BEGIN EC_IFNOT_DISPLAY
+  global $ec_output_type, $tp;
+  if ($ec_output_type == 'display') return;
+  if (trim($parm) == "") return;
+  return $tp->parseTemplate('{'.$parm.'}');
+SC_END
+
+SC_BEGIN EC_IF_PDF
+  global $ec_output_type, $tp;
+  if ($ec_output_type != 'pdf') return;
+  if (trim($parm) == "") return;
+  return $tp->parseTemplate('{'.$parm.'}');
+SC_END
+
+SC_BEGIN EC_IFNOT_PDF
+  global $ec_output_type, $tp;
+  if ($ec_output_type == 'pdf') return;
+  if (trim($parm) == "") return;
+  return $tp->parseTemplate('{'.$parm.'}');
+SC_END
+
+SC_BEGIN EC_PDF_OPTS
+  global $ec_pdf_options;
+  $ec_pdf_options = $parm;
+SC_END
+
+*/
 ?>
\ No newline at end of file
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/calendar_sql.php 1.0.4.src/e107_plugins/calendar_menu/calendar_sql.php
--- 1.0.2.src/e107_plugins/calendar_menu/calendar_sql.php	2013-10-11 14:02:27.334000028 -0500
+++ 1.0.4.src/e107_plugins/calendar_menu/calendar_sql.php	2013-09-26 16:49:50.000000000 -0500
@@ -1,42 +1,43 @@
-CREATE TABLE event (
-	event_id int(11) unsigned NOT NULL auto_increment,
-	event_start int(10) NOT NULL default '0',
-	event_end int(10) NOT NULL default '0',
-	event_allday tinyint(1) unsigned NOT NULL default '0',
-	event_recurring tinyint(1) unsigned NOT NULL default '0',
-	event_datestamp int(10) unsigned NOT NULL default '0',
-	event_title varchar(200) NOT NULL default '',
-	event_location text NOT NULL,
-	event_details text NOT NULL,
-	event_author varchar(100) NOT NULL default '',
-	event_contact varchar(200) NOT NULL default '',
-	event_category smallint(5) unsigned NOT NULL default '0',
-	event_thread varchar(100) NOT NULL default '',
-	event_rec_m tinyint(2) unsigned NOT NULL default '0',
-	event_rec_y tinyint(2) unsigned NOT NULL default '0',
-	PRIMARY KEY  (event_id)
-	) ENGINE=MyISAM;,
-	CREATE TABLE event_cat (
-	event_cat_id smallint(5) unsigned NOT NULL auto_increment,
-	event_cat_name varchar(100) NOT NULL default '',
-	event_cat_icon varchar(100) NOT NULL default '',
-	event_cat_class int(10) unsigned NOT NULL default '0',
-	event_cat_subs tinyint(3) unsigned NOT NULL default '0',
-	event_cat_ahead tinyint(3) unsigned NOT NULL default '0',
-	event_cat_msg1 text,
-	event_cat_msg2 text,
-	event_cat_notify  tinyint(3) unsigned NOT NULL default '0',
-	event_cat_last int(10) unsigned NOT NULL default '0',
-	event_cat_today int(10) unsigned NOT NULL default '0',
-	event_cat_lastupdate int(10) unsigned NOT NULL default '0',
-	event_cat_addclass int(10) unsigned NOT NULL default '0',
-	event_cat_description text,
-	event_cat_force_class int(10) unsigned NOT NULL default '0',
-	PRIMARY KEY  (event_cat_id)
-	) ENGINE=MyISAM;,
-	CREATE TABLE event_subs (
-	event_subid int(10) unsigned NOT NULL auto_increment,
-	event_userid  int(10) unsigned NOT NULL default '0',
-	event_cat  int(10) unsigned NOT NULL default '0',
-	PRIMARY KEY  (event_subid)
-	) ENGINE=MyISAM;
+CREATE TABLE event (
+	event_id int(11) unsigned NOT NULL auto_increment,
+	event_start int(10) NOT NULL default '0',
+	event_end int(10) NOT NULL default '0',
+	event_allday tinyint(1) unsigned NOT NULL default '0',
+	event_recurring tinyint(1) unsigned NOT NULL default '0',
+	event_datestamp int(10) unsigned NOT NULL default '0',
+	event_title varchar(200) NOT NULL default '',
+	event_location text NOT NULL,
+	event_details text NOT NULL,
+	event_author varchar(100) NOT NULL default '',
+	event_contact varchar(200) NOT NULL default '',
+	event_category smallint(5) unsigned NOT NULL default '0',
+	event_thread varchar(100) NOT NULL default '',
+	event_rec_m tinyint(2) unsigned NOT NULL default '0',
+	event_rec_y tinyint(2) unsigned NOT NULL default '0',
+	PRIMARY KEY  (event_id),
+	KEY event_start (event_start)
+	) ENGINE=MyISAM;,
+	CREATE TABLE event_cat (
+	event_cat_id smallint(5) unsigned NOT NULL auto_increment,
+	event_cat_name varchar(100) NOT NULL default '',
+	event_cat_icon varchar(100) NOT NULL default '',
+	event_cat_class int(10) unsigned NOT NULL default '0',
+	event_cat_subs tinyint(3) unsigned NOT NULL default '0',
+	event_cat_ahead tinyint(3) unsigned NOT NULL default '0',
+	event_cat_msg1 text,
+	event_cat_msg2 text,
+	event_cat_notify  tinyint(3) unsigned NOT NULL default '0',
+	event_cat_last int(10) unsigned NOT NULL default '0',
+	event_cat_today int(10) unsigned NOT NULL default '0',
+	event_cat_lastupdate int(10) unsigned NOT NULL default '0',
+	event_cat_addclass int(10) unsigned NOT NULL default '0',
+	event_cat_description text,
+	event_cat_force_class int(10) unsigned NOT NULL default '0',
+	PRIMARY KEY  (event_cat_id)
+	) ENGINE=MyISAM;,
+	CREATE TABLE event_subs (
+	event_subid int(10) unsigned NOT NULL auto_increment,
+	event_userid  int(10) unsigned NOT NULL default '0',
+	event_cat  int(10) unsigned NOT NULL default '0',
+	PRIMARY KEY  (event_subid)
+	) ENGINE=MyISAM;
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/calendar_template.php 1.0.4.src/e107_plugins/calendar_menu/calendar_template.php
--- 1.0.2.src/e107_plugins/calendar_menu/calendar_template.php	2013-10-11 14:02:27.334000028 -0500
+++ 1.0.4.src/e107_plugins/calendar_menu/calendar_template.php	2013-09-26 16:49:50.000000000 -0500
@@ -1,269 +1,307 @@
-<?php
-/*
-+ ----------------------------------------------------------------------------+
-|     e107 website system
-|
-|     Copyright (C) 2001-2002 Steve Dunstan (jalist@e107.org)
-|     Copyright (C) 2008-2010 e107 Inc (e107.org)
-|
-|
-|     Released under the terms and conditions of the
-|     GNU General Public License (http://gnu.org).
-|
-|     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/calendar_template.php $
-|     $Revision: 11678 $
-|     $Id: calendar_template.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
-|
-| 10.11.06 steved - mods for next CVS release
-+----------------------------------------------------------------------------+
-*/
-if (!defined('e107_INIT')) { exit; }
-
-// TIME SWITCH BUTTONS ------------------------------------------------------------
-$sc_style['PREV_MONTH']['pre'] = "<span class='defaulttext'>";
-$sc_style['PREV_MONTH']['post'] = "</span>";
-
-$sc_style['CURRENT_MONTH']['pre'] = "<b>";
-$sc_style['CURRENT_MONTH']['post'] = "</b>";
-
-$sc_style['NEXT_MONTH']['pre'] = "<span class='defaulttext'>";
-$sc_style['NEXT_MONTH']['post'] = "</span>";
-
-$sc_style['PREV_YEAR']['pre'] = "";
-$sc_style['PREV_YEAR']['post'] = "";
-
-$sc_style['MONTH_LIST']['pre'] = "";
-$sc_style['MONTH_LIST']['post'] = "";
-
-$sc_style['NEXT_YEAR']['pre'] = "";
-$sc_style['NEXT_YEAR']['post'] = "";
-
-//<table style='width:98%;' class='fborder'>
-
-$CALENDAR_TIME_TABLE = "
-<table cellpadding='0' cellspacing='1' class='fborder' style='width:100%'>
-<tr>
-	<td class='forumheader' style='width:18%; text-align:left'>{PREV_MONTH}</td>
-	<td class='fcaption' style='width:64%; text-align:center'>{CURRENT_MONTH}</td>
-	<td class='forumheader' style='width:18%; text-align:right'>{NEXT_MONTH}</td>
-</tr>\n
-<tr>
-	<td class='forumheader3' style='text-align:left'>{PREV_YEAR}</td>
-	<td class='fcaption' style='text-align:center; vertical-align:middle'>{MONTH_LIST}</td>
-	<td class='forumheader3' style='text-align:right'>{NEXT_YEAR}</td>
-</tr>\n
-</table>";
-
-
-
-// NAVIGATION BUTTONS ------------------------------------------------------------
-//$sc_style['NAV_LINKCURRENTMONTH']['pre'] = "<span class='button' style='width:120px; '>";
-//$sc_style['NAV_LINKCURRENTMONTH']['post'] = "</span>";
-$sc_style['NAV_LINKCURRENTMONTH']['pre'] = "";
-$sc_style['NAV_LINKCURRENTMONTH']['post'] = "";
-
-$CALENDAR_NAVIGATION_TABLE = "
-<div style='text-align:center; margin-bottom:20px;'>
-<form method='post' action='" . e_SELF . "?" . e_QUERY . "' id='calform'>
-<table border='0' cellpadding='0' cellspacing='0' style='width:100%;'>
-<tr>
-	<td style='text-align:center;'>{NAV_CATEGORIES} {NAV_BUT_ALLEVENTS} {NAV_BUT_VIEWCAT} {NAV_BUT_ENTEREVENT} {NAV_BUT_SUBSCRIPTION} {NAV_LINKCURRENTMONTH}</td>
-</tr>\n
-</table>
-</form>
-</div>";
-
-
-
-// EVENT LIST ------------------------------------------------------------
-$sc_style['EVENTLIST_CAPTION']['pre'] = "<tr><td class='fcaption' colspan='2'>";
-$sc_style['EVENTLIST_CAPTION']['post'] = ":<br /><br /></td></tr>\n";
-
-$EVENT_EVENTLIST_TABLE_START = "<table style='width:100%' class='fborder'>{EVENTLIST_CAPTION}";
-$EVENT_EVENTLIST_TABLE_END = "</table>";
-
-
-
-// EVENT ARCHIVE ------------------------------------------------------------
-$sc_style['EVENTARCHIVE_CAPTION']['pre'] = "<tr><td colspan='2' class='fcaption'>";
-$sc_style['EVENTARCHIVE_CAPTION']['post'] = "</td></tr>\n";
-
-$EVENT_ARCHIVE_TABLE_START = "<br /><table style='width:100%' class='fborder'>{EVENTARCHIVE_CAPTION}";
-$EVENT_ARCHIVE_TABLE = "
-<tr>
-	<td style='width:35%; vertical-align:top' class='forumheader3'>{EVENT_RECENT_ICON}{EVENTARCHIVE_DATE}</td>
-	<td style='width:65%' class='forumheader3'>{EVENTARCHIVE_HEADING}</td>
-</tr>\n";
-//<br />{EVENTARCHIVE_DETAILS}
-$EVENT_ARCHIVE_TABLE_EMPTY = "<tr><td colspan='2' class='forumheader3'>{EVENTARCHIVE_EMPTY}</td></tr>\n";
-$EVENT_ARCHIVE_TABLE_END = "</table>";
-
-
-
-// EVENT SHOW EVENT ------------------------------------------------------------
-$EVENT_EVENT_TABLE_START = "<table style='width:100%' class='fborder' cellspacing='0' cellpadding='0'>";
-$EVENT_EVENT_TABLE_END = "</table>";
-
-$sc_style['EVENT_HEADING_DATE']['pre'] = "";
-$sc_style['EVENT_HEADING_DATE']['post'] = "";
-
-$sc_style['EVENT_DETAILS']['pre'] = "<tr><td colspan='2' class='forumheader3'>";
-$sc_style['EVENT_DETAILS']['post'] = "</td></tr>\n";
-
-$sc_style['EVENT_LOCATION']['pre'] = "<b>".EC_LAN_32."</b> ";
-$sc_style['EVENT_LOCATION']['post'] = "";
-
-$sc_style['EVENT_AUTHOR']['pre'] = "<b>".EC_LAN_31."</b> ";
-$sc_style['EVENT_AUTHOR']['post'] = "&nbsp;";
-
-$sc_style['EVENT_CONTACT']['pre'] = "<b>".EC_LAN_33."</b> ";
-$sc_style['EVENT_CONTACT']['post'] = "&nbsp;";
-
-$sc_style['EVENT_THREAD']['pre'] = "<tr><td colspan='2' class='forumheader3'><span class='smalltext'>";
-$sc_style['EVENT_THREAD']['post'] = "</span></td></tr>\n";
-
-$sc_style['EVENT_CATEGORY']['pre'] = "<b>".EC_LAN_30."</b> ";
-$sc_style['EVENT_CATEGORY']['post'] = "&nbsp;";
-
-$sc_style['EVENT_DATE_START']['pre'] = (isset($thisevent['event_allday']) && $thisevent['event_allday']) ? "<b>".EC_LAN_68."</b> " : "<b>".EC_LAN_29."</b> ";
-$sc_style['EVENT_DATE_START']['post'] = "";
-
-$sc_style['EVENT_TIME_START']['pre'] = EC_LAN_144;
-$sc_style['EVENT_TIME_START']['post'] = "";
-
-$sc_style['EVENT_DATE_END']['pre'] = "<b>".EC_LAN_69."</b> ";
-$sc_style['EVENT_DATE_END']['post'] = "";
-
-$sc_style['EVENT_TIME_END']['pre'] = EC_LAN_144;
-$sc_style['EVENT_TIME_END']['post'] = "";
-
-$EVENT_EVENT_TABLE = "
-<tr>
-	<td >
-		<div title='".EC_LAN_132."' class='fcaption' style='cursor:pointer; text-align:left; border:0px solid #000;' onclick=\"expandit('{EVENT_ID}')\">{EVENT_RECENT_ICON}{EVENT_CAT_ICON}{EVENT_HEADING_DATE}{EVENT_TIME_START}&nbsp;-&nbsp;{EVENT_TITLE}</div>
-		<div id='{EVENT_ID}' style='display:{EVENT_DISPLAYSTYLE}; padding-top:10px; padding-bottom:10px; text-align:left;'>
-			<table style='width:100%;'  cellspacing='0' cellpadding='0'>
-				<tr><td colspan='2' class='forumheader3'>{EVENT_AUTHOR} {EVENT_CAT_ICON} {EVENT_CATEGORY} {EVENT_CONTACT} {EVENT_OPTIONS}</td></tr>
-				<tr><td colspan='2' class='forumheader3'>{EVENT_DATE_START}{EVENT_TIME_START} {EVENT_DATE_END}{EVENT_TIME_END}</td></tr>\n
-				<tr><td colspan='2' class='forumheader3'>{EVENT_LOCATION}</td></tr>
-				{EVENT_DETAILS}
-				{EVENT_THREAD}
-			</table>
-		</div>
-	</td>
-</tr>\n
-";
-
-
-// CALENDAR SHOW EVENT ------------------------------------------------------------
-$sc_style['CALENDAR_CALENDAR_RECENT_ICON']['pre'] = "<td style='vertical-align:top; color: #0; background-color: #ff00; width:10px;'>";
-$sc_style['CALENDAR_CALENDAR_RECENT_ICON']['post'] = "</td>";
-$CALENDAR_SHOWEVENT = "<table cellspacing='0' cellpadding='0' style='width:100%;'><tr>{CALENDAR_CALENDAR_RECENT_ICON}<td style='vertical-align:top; width:10px;'>{SHOWEVENT_IMAGE}</td><td style='vertical-align:top; width:2%;'>{SHOWEVENT_INDICAT}</td><td style='vertical-align:top;'>{SHOWEVENT_HEADING}</td></tr>\n</table>";
-
-
-
-// CALENDAR CALENDAR ------------------------------------------------------------
-$CALENDAR_CALENDAR_START = "
-<div style='text-align:center'>
-<table cellpadding='0' cellspacing='1' class='fborder' style='background-color:#DDDDDD; width:100%'>";
-
-$CALENDAR_CALENDAR_END = "
-</tr>\n</table></div>";
-
-$CALENDAR_CALENDAR_DAY_NON = "<td style='width:12%;height:60px;'></td>";
-
-//header row
-$CALENDAR_CALENDAR_HEADER_START = "<tr>";
-$CALENDAR_CALENDAR_HEADER = "<td class='fcaption' style='z-index: -1; background-color:#000; color:#FFF; width:90px; height:20px; text-align:center; vertical-align:middle;'>{CALENDAR_CALENDAR_HEADER_DAY}</td>";
-$CALENDAR_CALENDAR_HEADER_END = "</tr>\n<tr>";
-
-
-$CALENDAR_CALENDAR_WEEKSWITCH = "</tr>\n<tr>";
-
-//today
-$CALENDAR_CALENDAR_DAY_TODAY = "
-<td class='forumheader3' style='vertical-align:top; width:14%; height:90px; padding-bottom:0px;padding-right:0px; margin-right:0px; padding:2px;'>
-<span style='z-index: 2; position:relative; top:1px; height:10px;padding-right:0px'>{CALENDAR_CALENDAR_DAY_TODAY_HEADING}</span>";
-
-//day has events
-$CALENDAR_CALENDAR_DAY_EVENT = "
-<td class='forumheader3' style='z-index: 1;vertical-align:top; width:14%; height:90px; padding-bottom:0px;padding-right:0px; margin-right:0px; padding:2px;'>
-<span style='z-index: 2; position:relative; top:1px; height:10px;padding-right:0px'><b>{CALENDAR_CALENDAR_DAY_EVENT_HEADING}</b></span>";
-
-// no events and not today
-$CALENDAR_CALENDAR_DAY_EMPTY = "
-<td class='forumheader2' style='z-index: 1;vertical-align:top; width:14%; height:90px;padding-bottom:0px;padding-right:0px; margin-right:0px; padding:2px;'>
-<span style='z-index: 2; position:relative; top:1px; height:10px;padding-right:0px'><b>{CALENDAR_CALENDAR_DAY_EMPTY_HEADING}</b></span>";
-
-$CALENDAR_CALENDAR_DAY_END = "</td>";
-
-//====================================================================
-// Calendar menu templates
-$CALENDAR_MENU_START = "<div style='text-align:center'>";
-$CALENDAR_MENU_TABLE_START =   "<table cellpadding='0' cellspacing='1' style='width:100%' class='fborder'>";
-
-$CALENDAR_MENU_END = "</tr></table></div>";
-
-// Blank cells at beginning and end
-$CALENDAR_MENU_DAY_NON = "<td class='forumheader3' style='padding:1px; text-align:center'><br /></td>";
-
-//header row
-$CALENDAR_MENU_HEADER_START = "<tr>\n";
-$CALENDAR_MENU_HEADER_FRONT = "<td class='forumheader' style='text-align:center; vertical-align:middle;'><span class='smalltext'>";
-$CALENDAR_MENU_HEADER_BACK = "</span></td>";
-$CALENDAR_MENU_HEADER_END = "</tr>\n<tr>";
-
-
-$CALENDAR_MENU_WEEKSWITCH = "</tr>\n<tr>";
-
-// Start and end CSS for date cells - six cases to decode, determined by array index:
-//     	1 - Today, no events
-//		2 - Some other day, no events (or no icon defined)
-//		3 - Today with events (and icon defined)
-//		4 - Some other day with events (and icon defined)
-//		5 - today with events, one or more of which has recently been added/updated (and icon defined)
-//		6 - Some other day with events, one or more of which has recently been added/updated (and icon defined)
- 
-//today, no events
-$CALENDAR_MENU_DAY_START['1'] = "<td class='indent' style='width:14.28%; padding:1px; text-align:center; '>";
-
-// no events and not today
-$CALENDAR_MENU_DAY_START['2'] = "<td class='forumheader3' style='width:14.28%; padding:1px; text-align:center; '>";
-
-//day has events - same whether its today or not
-$CALENDAR_MENU_DAY_START['3'] = "<td class='indent' style='width:14.28%; padding:1px; text-align:center; '>";
-$CALENDAR_MENU_DAY_START['4'] = "<td class='indent' style='width:14.28%; padding:1px; text-align:center;'>";
-// day has events, one which is recently added/updated
-$CALENDAR_MENU_DAY_START['5'] = "<td class='indent' style='width:14.28%; padding:1px; text-align:center; '>";
-$CALENDAR_MENU_DAY_START['6'] = "<td class='indent' style='width:14.28%; padding:1px; text-align:center;'>";
-// Example highlight using background colour:
-//$CALENDAR_MENU_DAY_START['5'] = "<td class='indent' style='width:14.28%; padding:1px; text-align:center; background-color: #FF8000;'>";
-//$CALENDAR_MENU_DAY_START['6'] = "<td class='indent' style='width:14.28%; padding:1px; text-align:center; background-color: #FF0000; '>";
-
-$CALENDAR_MENU_DAY_END['1'] = "</td>";
-$CALENDAR_MENU_DAY_END['2'] = "</td>";
-$CALENDAR_MENU_DAY_END['3'] = "</td>";
-$CALENDAR_MENU_DAY_END['4'] = "</td>";
-$CALENDAR_MENU_DAY_END['5'] = "</td>";
-$CALENDAR_MENU_DAY_END['6'] = "</td>";
-
-//============================================================================
-// Next event menu template
-$sc_style['NEXT_EVENT_TIME']['pre'] = EC_LAN_144;
-$sc_style['NEXT_EVENT_TIME']['post'] = "";
-// Following are original styles
-//$sc_style['NEXT_EVENT_ICON']['pre'] = "<img style='border:0px' src='";
-//$sc_style['NEXT_EVENT_ICON']['post'] = "' alt='' />&nbsp;";
-// Following to 'float right' on a larger icon
-$sc_style['NEXT_EVENT_ICON']['pre'] = "<img style='clear: right; float: left; margin: 0px 3px 0px 0px; padding:1px; border: 0px;' src='";
-$sc_style['NEXT_EVENT_ICON']['post'] = "' alt='' />";
-
-
-if (!isset($EVENT_CAL_FE_LINE))
-{  
-  $EVENT_CAL_FE_LINE = "{NEXT_EVENT_ICON}{NEXT_EVENT_DATE}{NEXT_EVENT_TIME}<br /><strong>{NEXT_EVENT_TITLE}</strong>{NEXT_EVENT_GAP}";
-}
-
-
+<?php
+/*
+ * e107 website system
+ *
+ * Copyright (C) 2002-2012 e107 Inc (e107.org)
+ * Released under the terms and conditions of the
+ * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
+ *
+ * Event calendar - event entry and display
+ *
+ * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/calendar_template.php $
+ * $Id: calendar_template.php 13099 2013-04-17 20:36:19Z e107steved $
+ */
+if (!defined('e107_INIT')) { exit; }
+if (!defined("USER_WIDTH")){ define("USER_WIDTH","width:auto"); }
+
+global $imode;
+if (varsettrue($imode))
+{  // Its 0.8
+  $ec_images_path = e_IMAGE.'packs/'.$imode.'/';
+  if (!defined('EC_RECENT_ICON')) {define('EC_RECENT_ICON',$ec_images_path.'generic/new.png'); }		// Filename of icon used to flag recent events
+}
+else
+{
+  $ec_images_path = e_IMAGE;
+  if (!defined('EC_RECENT_ICON')) {define('EC_RECENT_ICON',e_IMAGE.'generic/'.IMODE.'/new.png'); }		// Filename of icon used to flag recent events
+}
+
+
+
+// TIME SWITCH BUTTONS ------------------------------------------------------------
+$sc_style['EC_PREV_MONTH']['pre'] = "<span class='defaulttext'>";
+$sc_style['EC_PREV_MONTH']['post'] = "</span>";
+
+$sc_style['EC_CURRENT_MONTH']['pre'] = "<b>";
+$sc_style['EC_CURRENT_MONTH']['post'] = "</b>";
+
+$sc_style['EC_NEXT_MONTH']['pre'] = "<span class='defaulttext'>";
+$sc_style['EC_NEXT_MONTH']['post'] = "</span>";
+
+$sc_style['EC_PREV_YEAR']['pre'] = "";
+$sc_style['EC_PREV_YEAR']['post'] = "";
+
+$sc_style['EC_MONTH_LIST']['pre'] = "";
+$sc_style['EC_MONTH_LIST']['post'] = "";
+
+$sc_style['EC_NEXT_YEAR']['pre'] = "";
+$sc_style['EC_NEXT_YEAR']['post'] = "";
+
+
+$CALENDAR_TIME_TABLE = "
+<table cellpadding='0' cellspacing='1' class='fborder' style='width:100%'>
+<tr>
+	<td class='forumheader' style='width:18%; text-align:left'>{EC_PREV_MONTH}</td>
+	<td class='fcaption' style='width:64%; text-align:center'>{EC_CURRENT_MONTH}</td>
+	<td class='forumheader' style='width:18%; text-align:right'>{EC_NEXT_MONTH}</td>
+</tr>\n
+<tr>
+	<td class='forumheader3' style='text-align:left'>{EC_PREV_YEAR}</td>
+	<td class='fcaption' style='text-align:center; vertical-align:middle'>{EC_MONTH_LIST}</td>
+	<td class='forumheader3' style='text-align:right'>{EC_NEXT_YEAR}</td>
+</tr>\n
+</table>";
+
+
+
+// NAVIGATION BUTTONS
+//$sc_style['NAV_LINKCURRENTMONTH']['pre'] = "<span class='button' style='width:120px; '>";
+//$sc_style['NAV_LINKCURRENTMONTH']['post'] = "</span>";
+$sc_style['EC_NAV_LINKCURRENTMONTH']['pre'] = "";
+$sc_style['EC_NAV_LINKCURRENTMONTH']['post'] = "";
+
+$CALENDAR_NAVIGATION_TABLE = "
+<div style='text-align:center; margin-bottom:20px;'>
+<form method='post' action='" . e_SELF . "?" . e_QUERY . "' id='calform'>
+<table border='0' cellpadding='0' cellspacing='0' style='width:100%;'>
+<tr>
+<td style='text-align:center;'>{EC_NAV_CATEGORIES} {EC_NAV_BUT_ALLEVENTS} {EC_NAV_BUT_VIEWCAT} {EC_NAV_BUT_ENTEREVENT} {EC_NAV_BUT_SUBSCRIPTION} {EC_NAV_BUT_PRINTLISTS} {EC_NAV_LINKCURRENTMONTH}</td>
+</tr>\n
+</table>
+</form>
+</div>";
+
+
+
+// EVENT LIST ------------------------------------------------------------
+$sc_style['EC_EVENTLIST_CAPTION']['pre'] = "<tr><td class='fcaption' colspan='2'>";
+$sc_style['EC_EVENTLIST_CAPTION']['post'] = ":<br /><br /></td></tr>\n";
+
+$EVENT_EVENTLIST_TABLE_START = "<table style='width:100%' class='fborder'>{EC_EVENTLIST_CAPTION}";
+$EVENT_EVENTLIST_TABLE_END = "</table>";
+
+
+
+// EVENT ARCHIVE ------------------------------------------------------------
+$sc_style['EC_EVENTARCHIVE_CAPTION']['pre'] = "<tr><td colspan='2' class='fcaption'>";
+$sc_style['EC_EVENTARCHIVE_CAPTION']['post'] = "</td></tr>\n";
+
+$EVENT_ARCHIVE_TABLE_START = "<br /><table style='width:100%' class='fborder'>{EC_EVENTARCHIVE_CAPTION}";
+$EVENT_ARCHIVE_TABLE = "
+<tr>
+	<td style='width:35%; vertical-align:top' class='forumheader3'>{EC_EVENT_RECENT_ICON}{EC_EVENTARCHIVE_DATE}</td>
+	<td style='width:65%' class='forumheader3'>{EC_EVENTARCHIVE_HEADING}</td>
+</tr>\n";
+//<br />{EVENTARCHIVE_DETAILS}
+$EVENT_ARCHIVE_TABLE_EMPTY = "<tr><td colspan='2' class='forumheader3'>{EC_EVENTARCHIVE_EMPTY}</td></tr>\n";
+$EVENT_ARCHIVE_TABLE_END = "</table>";
+
+
+
+// EVENT SHOW EVENT ------------------------------------------------------------
+$EVENT_EVENT_TABLE_START = "<table style='width:100%' class='fborder' cellspacing='0' cellpadding='0'>";
+$EVENT_EVENT_TABLE_END = "</table>";
+
+$sc_style['EC_EVENT_HEADING_DATE']['pre'] = "";
+$sc_style['EC_EVENT_HEADING_DATE']['post'] = "";
+
+$sc_style['EC_EVENT_DETAILS']['pre'] = "<tr><td colspan='2' class='forumheader3'>";
+$sc_style['EC_EVENT_DETAILS']['post'] = "</td></tr>\n";
+
+$sc_style['EC_EVENT_LOCATION']['pre'] = "<tr><td colspan='2' class='forumheader3'><b>".EC_LAN_32."</b> ";
+$sc_style['EC_EVENT_LOCATION']['post'] = "</td></tr>";
+
+$sc_style['EC_EVENT_AUTHOR']['pre'] = "<b>".EC_LAN_31."</b> ";
+$sc_style['EC_EVENT_AUTHOR']['post'] = "&nbsp;";
+
+$sc_style['EC_EVENT_CONTACT']['pre'] = "<b>".EC_LAN_33."</b> ";
+$sc_style['EC_EVENT_CONTACT']['post'] = "&nbsp;";
+
+$sc_style['EC_EVENT_THREAD']['pre'] = "<tr><td colspan='2' class='forumheader3'><span class='smalltext'>";
+$sc_style['EC_EVENT_THREAD']['post'] = "</span></td></tr>\n";
+
+$sc_style['EC_EVENT_CATEGORY']['pre'] = "<b>".EC_LAN_30."</b> ";
+$sc_style['EC_EVENT_CATEGORY']['post'] = "&nbsp;";
+
+$sc_style['EC_EVENT_DATE_START']['pre'] = "";
+$sc_style['EC_EVENT_DATE_START']['post'] = "";
+
+$sc_style['EC_EVENT_TIME_START']['pre'] = "";
+$sc_style['EC_EVENT_TIME_START']['post'] = "";
+
+$sc_style['EC_EVENT_DATE_END']['pre'] = "";
+$sc_style['EC_EVENT_DATE_END']['post'] = "";
+
+$sc_style['EC_EVENT_TIME_END']['pre'] = "";
+$sc_style['EC_EVENT_TIME_END']['post'] = "";
+
+$sc_style['EC_EVENT_EVENT_DATE_TIME']['pre'] =  "<b>".EC_LAN_29."</b> ";
+$sc_style['EC_EVENT_EVENT_DATE_TIME']['post'] = "";
+
+$sc_style['EC_IFNOT_ALLDAY']['pre'] = EC_LAN_144;
+$sc_style['EC_IFNOT_ALLDAY']['post'] = "";
+
+// The $EVENT_EVENT_DATETIME strings are used with the EC_EVENT_EVENT_DATE_TIME shortcode.
+// There are four cases, each with a corresponding index into $EVENT_EVENT_DATETIME:
+// 	0 - Normal event, starting and finishing on different dates (the 'original' default)
+//	1 - Normal event, starting and finishing on the same day
+//	2 - All-day event, starting and finishing on different days
+//	3 - All-day event, starting and finishing on the same day
+$EVENT_EVENT_DATETIME[0]  = "{EC_EVENT_DATE_START}".EC_LAN_144."{EC_EVENT_TIME_START}<b>  ".EC_LAN_69."</b> {EC_EVENT_DATE_END}{EC_IFNOT_ALLDAY=EC_EVENT_TIME_END}";
+$EVENT_EVENT_DATETIME[1]  = "{EC_EVENT_DATE_START} ".EC_LAN_84." {EC_EVENT_TIME_START}".EC_LAN_85."{EC_EVENT_TIME_END}";
+$EVENT_EVENT_DATETIME[2]  = "{EC_EVENT_DATE_START} <b>".EC_LAN_69."</b> {EC_EVENT_DATE_END}";
+$EVENT_EVENT_DATETIME[3]  = "{EC_EVENT_DATE_START}";
+$EVENT_EVENT_TABLE = "
+<tr>
+  <td >
+	<div title='".EC_LAN_132."' class='fcaption' style='cursor:pointer; text-align:left; border:0px solid #000;' onclick=\"expandit('{EC_EVENT_ID}')\">{EC_EVENT_RECENT_ICON}{EC_EVENT_CAT_ICON}{EC_EVENT_HEADING_DATE}{EC_IFNOT_ALLDAY=EC_EVENT_TIME_START}&nbsp;-&nbsp;{EC_EVENT_TITLE}</div>
+	<div id='{EC_EVENT_ID}' style='{EC_EVENT_DISPLAYSTYLE}; padding-top:10px; padding-bottom:10px; text-align:left;'>
+	  <table style='width:100%;'  cellspacing='0' cellpadding='0'>
+		<tr><td colspan='2' class='forumheader3'>{EC_EVENT_AUTHOR} {EC_EVENT_CAT_ICON} {EC_EVENT_CATEGORY} {EC_EVENT_CONTACT} {EC_EVENT_OPTIONS}</td></tr>
+		<tr><td colspan='2' class='forumheader3'>{EC_EVENT_EVENT_DATE_TIME}</td></tr>\n
+		{EC_EVENT_LOCATION}
+		{EC_EVENT_DETAILS}
+		{EC_EVENT_THREAD}
+	  </table>
+	</div>
+  </td>
+</tr>\n
+";
+
+
+//------------------------------------------
+// CALENDAR CALENDAR - 'Big' calendar
+//------------------------------------------
+$CALENDAR_CALENDAR_START = "
+<div style='text-align:center'>
+<table cellpadding='0' cellspacing='1' class='fborder' style='background-color:#DDDDDD; width:100%'>
+<colgroup>
+<col style='width:14%; padding-bottom:0px;padding-right:0px; margin-right:0px; padding:2px;' />
+<col style='width:14%; padding-bottom:0px;padding-right:0px; margin-right:0px; padding:2px;' />
+<col style='width:14%; padding-bottom:0px;padding-right:0px; margin-right:0px; padding:2px;' />
+<col style='width:14%; padding-bottom:0px;padding-right:0px; margin-right:0px; padding:2px;' />
+<col style='width:14%; padding-bottom:0px;padding-right:0px; margin-right:0px; padding:2px;' />
+<col style='width:14%; padding-bottom:0px;padding-right:0px; margin-right:0px; padding:2px;' />
+<col style='width:14%; padding-bottom:0px;padding-right:0px; margin-right:0px; padding:2px;' />
+</colgroup>";
+
+$CALENDAR_CALENDAR_END = "
+</tr>\n</table></div>";
+
+// 'Empty' cells where there's not a day at all
+$CALENDAR_CALENDAR_DAY_NON = "<td style='width:14%;height:90px;'></td>";
+
+//header row
+$CALENDAR_CALENDAR_HEADER_START = "<tr>";
+$CALENDAR_CALENDAR_HEADER = "<td class='fcaption' style='z-index: -1; background-color:#000; color:#FFF; width:90px; height:20px; text-align:center; vertical-align:middle;'>{EC_CALENDAR_CALENDAR_HEADER_DAY}</td>";
+$CALENDAR_CALENDAR_HEADER_END = "</tr>\n<tr>";
+
+
+$CALENDAR_CALENDAR_WEEKSWITCH = "</tr>\n<tr>";
+
+//today
+$CALENDAR_CALENDAR_DAY_TODAY = "
+<td class='forumheader3' style='vertical-align:top;height:90px;'>
+<span style='z-index: 2; position:relative; top:1px; height:10px;padding-right:0px'>{EC_CALENDAR_CALENDAR_DAY_TODAY_HEADING}</span>";
+
+//day has events
+$CALENDAR_CALENDAR_DAY_EVENT = "
+<td class='forumheader3' style='z-index: 1;vertical-align:top;height:90px;'>
+<span style='z-index: 2; position:relative; top:1px; height:10px;padding-right:0px'><b>{EC_CALENDAR_CALENDAR_DAY_EVENT_HEADING}</b></span>";
+
+// no events and not today
+$CALENDAR_CALENDAR_DAY_EMPTY = "
+<td class='forumheader2' style='z-index: 1;vertical-align:top;height:90px;'>
+<span style='z-index: 2; position:relative; top:1px; height:10px;padding-right:0px'><b>{EC_CALENDAR_CALENDAR_DAY_EMPTY_HEADING}</b></span>";
+
+$CALENDAR_CALENDAR_DAY_END = "</td>";
+
+// CALENDAR SHOW EVENT
+$sc_style['EC_CALENDAR_CALENDAR_RECENT_ICON']['pre'] = "<td style='vertical-align:top; color: #0; background-color: #ff00; width:10px;'>";
+$sc_style['EC_CALENDAR_CALENDAR_RECENT_ICON']['post'] = "</td>";
+$CALENDAR_SHOWEVENT = "<table cellspacing='0' cellpadding='0' style='width:100%;'><tr>{EC_CALENDAR_CALENDAR_RECENT_ICON}<td style='vertical-align:top; width:10px;'>{EC_SHOWEVENT_IMAGE}</td><td style='vertical-align:top; width:2%;'>{EC_SHOWEVENT_INDICAT}</td><td style='vertical-align:top;'>{EC_SHOWEVENT_HEADING}</td></tr>\n</table>";
+
+
+//------------------------------------------
+// Calendar menu - 'Small' calendar
+//------------------------------------------
+$CALENDAR_MENU_HDG_LINK_CLASS = "class='forumlink'";			// Class, and optional style, for menu heading if its a clickable link
+$CALENDAR_MENU_START = "<div style='text-align:center'>";
+$CALENDAR_MENU_TABLE_START =  "<table cellpadding='0' cellspacing='1' style='width:100%;' class='fborder'>";	// colgroup doesn't work!
+
+$CALENDAR_MENU_END = "</tr></table></div>";
+
+// Blank cells at beginning and end
+$CALENDAR_MENU_DAY_NON = "<td class='forumheader3' style='width:14.28%; padding:1px; text-align:center; '><br /></td>";
+
+//header row
+$CALENDAR_MENU_HEADER_START = "<tr>\n";
+$CALENDAR_MENU_HEADER_FRONT = "<td class='forumheader' style='text-align:center; vertical-align:middle;'><span class='smalltext'>";
+$CALENDAR_MENU_HEADER_BACK = "</span></td>";
+$CALENDAR_MENU_HEADER_END = "</tr>\n<tr>";
+
+
+$CALENDAR_MENU_WEEKSWITCH = "</tr>\n<tr>";
+
+// Start and end CSS for date cells - six cases to decode, determined by array index:
+//     	1 - Today, no events
+//		2 - Some other day, no events
+//		3 - Today with events
+//		4 - Some other day with events
+//		5 - today with events, one or more of which has recently been added/updated
+//		6 - Some other day with events, one or more of which has recently been added/updated
+
+ 
+//today, no events
+$CALENDAR_MENU_DAY_START['1'] = "<td class='indent' style='width:14.28%; padding:1px; text-align:center; '>";
+
+// no events and not today
+$CALENDAR_MENU_DAY_START['2'] = "<td class='forumheader3' style='width:14.28%; padding:1px; text-align:center; '>";
+
+//day has events - same whether its today or not
+$CALENDAR_MENU_DAY_START['3'] = "<td class='indent' style='width:14.28%; padding:1px; text-align:center; '>";
+$CALENDAR_MENU_DAY_START['4'] = "<td class='indent' style='width:14.28%; padding:1px; text-align:center; '>";
+// day has events, one which is recently added/updated
+$CALENDAR_MENU_DAY_START['5'] = "<td class='indent' style='width:14.28%; padding:1px; text-align:center; '>";
+$CALENDAR_MENU_DAY_START['6'] = "<td class='indent' style='width:14.28%; padding:1px; text-align:center; '>";
+// Example highlight using background colour:
+//$CALENDAR_MENU_DAY_START['5'] = "<td class='indent' style='width:14.28%; padding:1px; text-align:center; background-color: #FF8000;'>";
+//$CALENDAR_MENU_DAY_START['6'] = "<td class='indent' style='width:14.28%; padding:1px; text-align:center; background-color: #FF0000; '>";
+ 
+ 
+$CALENDAR_MENU_DAY_END['1'] = "</td>";
+$CALENDAR_MENU_DAY_END['2'] = "</td>";
+$CALENDAR_MENU_DAY_END['3'] = "</td>";
+$CALENDAR_MENU_DAY_END['4'] = "</td>";
+$CALENDAR_MENU_DAY_END['5'] = "</td>";
+$CALENDAR_MENU_DAY_END['6'] = "</td>";
+
+//============================================================================
+// Next event menu template
+$sc_style['EC_NEXT_EVENT_TIME']['pre'] = EC_LAN_144;
+$sc_style['EC_NEXT_EVENT_TIME']['post'] = "";
+// Following are original styles
+//$sc_style['NEXT_EVENT_ICON']['pre'] = "<img style='border:0px' src='";
+//$sc_style['NEXT_EVENT_ICON']['post'] = "' alt='' />&nbsp;";
+// Following to 'float right' on a larger icon
+$sc_style['EC_NEXT_EVENT_ICON']['pre'] = "<img style='clear: right; float: left; margin: 0px 3px 0px 0px; padding:1px; border: 0px;' src='";
+$sc_style['EC_NEXT_EVENT_ICON']['post'] = "' alt='' />";
+
+
+if (!isset($EVENT_CAL_FE_LINE))
+{  
+  $EVENT_CAL_FE_LINE = "{EC_NEXT_EVENT_RECENT_ICON}{EC_NEXT_EVENT_ICON}{EC_NEXT_EVENT_DATE}{EC_NEXT_EVENT_TIME}<br /><strong>{EC_NEXT_EVENT_TITLE}</strong>{EC_NEXT_EVENT_GAP}";
+}
+
+
 ?>
\ No newline at end of file
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/e_bb.php 1.0.4.src/e107_plugins/calendar_menu/e_bb.php
--- 1.0.2.src/e107_plugins/calendar_menu/e_bb.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.0.4.src/e107_plugins/calendar_menu/e_bb.php	2013-09-26 16:49:50.000000000 -0500
@@ -0,0 +1,24 @@
+<?php
+/*
+ * e107 website system
+ *
+ * Copyright (C) 2002-2012 e107 Inc (e107.org)
+ * Released under the terms and conditions of the
+ * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
+ *
+ * Event calendar - bbcode template for text entry
+ *
+ * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/usersettings.php $
+ * $Id: usersettings.php 11645 2010-08-01 12:57:11Z e107coders $
+ */
+$temp['event'] = "
+	{BB_HELP=ec_event}<br />
+	{BB=link}{BB=b}{BB=i}{BB=u}{BB=img}{BB=center}{BB=left}{BB=right}
+	{BB=bq}{BB=list}{BB=fontcol}{BB=fontsize}{BB=emotes}
+	{BB_PREIMAGEDIR=".e_IMAGE."newspost_images/}
+	{BB=preimage}{BB=prefile}
+";
+
+
+
+?>
\ No newline at end of file
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/ecal_class.php 1.0.4.src/e107_plugins/calendar_menu/ecal_class.php
--- 1.0.2.src/e107_plugins/calendar_menu/ecal_class.php	2013-10-11 14:02:27.335000028 -0500
+++ 1.0.4.src/e107_plugins/calendar_menu/ecal_class.php	2013-09-26 16:49:50.000000000 -0500
@@ -1,249 +1,836 @@
-<?php
-/*
-+ ----------------------------------------------------------------------------+
-|     e107 website system
-|
-|     Copyright (C) 2001-2002 Steve Dunstan (jalist@e107.org)
-|     Copyright (C) 2008-2010 e107 Inc (e107.org)
-|
-|
-|     Released under the terms and conditions of the
-|     GNU General Public License (http://gnu.org).
-|
-|     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/ecal_class.php $
-|     $Revision: 12341 $
-|     $Id: ecal_class.php 12341 2011-09-02 10:38:04Z secretr $
-|     $Author: secretr $
-|
-| Event calendar class for gradual enhancement
-| (Some bits may be usefully transferred to common code later)
-|
-| 11.11.06 	- Add date formatting options
-|			- Add notify
-|
-+----------------------------------------------------------------------------+
-*/
-
-/*
-Preferences used:
-  eventpost_caltime			1 = server, 2 = site, 3 = user
-  eventpost_timedisplay		1 = 24 hour, 2 = 12 hour default, 3 = custom
-  eventpost_timecustom		String for custom time display
-
-  date() returns formatted date/time string
-*/
-  class ecal_class
-  {
-  // Useful time/date variables - set up on creation, and available externally
-  // (All the times and dates are consistent, being derived from $time_now, which is the time the constructor was
-  // called - probably doesn't matter, but may help someone.
-	var $time_now;						// Current time/date stamp
-	var $site_timedate;					// Site time/date stamp - adjusted for time zone
-	var $user_timedate;					// Time/date based on user's time zone
-	var $cal_timedate;					// Time/date stamp used by event calendar (user set)
-	var $now_date;						// Time/date array from $time_now
-	var $site_date;						// Time/date array from $site_timedate
-	var $cal_date ;						// Time/date array from $cal_timedate
-	
-	var $cal_super;						// True if current user is a calendar supervisor
-	var $extra_query;					// Extra bit of mysql query used for non-supervisor (read) queries
-	
-	var $time_format_string;			// String to format times on the site
-	var $cal_format_string;				// String to format the displayed date on event entry ("Y-m-d" or "d-m-Y")
-	var $dcal_format_string;			// Format string to pass to DHTML calendar
-	var $java_format_code;				// Code to pass to Javascript re date format
-	
-	var $event_date_format_string;		// String to format the date in the event calendar
-	var $next_date_format_string;		// String to format the date in the 'forthcoming event' menu
-	
-	var $max_cache_time;				// Oldest permissible age of any cached pages relating to event calendar
-	var $max_recent_show;				// Time in seconds for showing 'recent events'
-	
-    function ecal_class()
-	{  // Constructor
-	  global $pref;
-	  if (!isset($pref['plug_installed']['calendar_menu']))
-	  {
-		header('location:'.e_BASE.'index.php');
-		exit;
-	  }
-	  
-	  $this->time_now = time();
-	  $this->site_timedate = $this->time_now + ($pref['time_offset'] * 3600);			// Check sign of offset
-	  $this->user_timedate = $this->time_now + TIMEOFFSET;
-	  switch ($pref['eventpost_caltime'])
-	  {
-	    case 1 :
-	      $this->cal_timedate  = $this->site_timedate;		// Site time
-		  break;
-		case 2 :
-	      $this->cal_timedate  = $this->user_timedate;		// User
-		  break;
-		default :
-	      $this->cal_timedate = $this->time_now;			// Server time - default
-	  }
-	  $this->now_date  = getdate($this->time_now);
-	  $this->site_date = getdate($this->site_timedate);	// Array with h,m,s, day, month year etc
-	  $this->cal_date  = getdate($this->cal_timedate);
-	  
-	  $this->max_cache_time = $this->site_date['minutes'] + 60*$this->site_date['hours'];
-	  
-	  $this->cal_super = check_class($pref['eventpost_super']);
-	  if ($this->cal_super) $this->extra_query = ""; else $this->extra_query = " AND find_in_set(event_cat_class,'".USERCLASS_LIST."')";
-
-	  if (isset($pref['eventpost_recentshow']) && ($pref['eventpost_recentshow'] != 0))
-	  {
-	    $this->max_recent_show = 3600 * $pref['eventpost_recentshow'];
-	  }
-	  else
-	  {
-	    $this->max_recent_show = 0;
-	  }
-	  switch ($pref['eventpost_timedisplay'])
-	  {
-	    case 2 : 
-		  $this->time_format_string = "%I:%M %p";      // 12-hour display
-		  break;
-		case 3 :
-		  $this->time_format_string = $pref['eventpost_timecustom'];      // custom display
-		  if (isset($this->time_format_string)) break;
-		default :
-		  $this->time_format_string = "%H%M";      // default to 24-hour display
-	  }
-	  
-	  switch ($pref['eventpost_datedisplay'])
-	  {  // Event entry calendar
-	    case 2 :
-	      $this->cal_format_string = "d-m-Y";
-		  $this->dcal_format_string = "%d-%m-%Y";
-		  $this->java_format_code = 2;
-		  break;
-	    case 3 :
-	      $this->cal_format_string = "m-d-Y";
-		  $this->dcal_format_string = "%m-%d-%Y";
-		  $this->java_format_code = 3;
-		  break;
-	    default :  // 'original' defaults
-	      $this->cal_format_string = "Y-m-d";
-		  $this->dcal_format_string = "%Y-%m-%d";
-		  $this->java_format_code = 1;
-	  }
-	  
-	  switch ($pref['eventpost_dateevent'])
-	  {  // Event list date display
-		case 0 :
-		  $this->event_date_format_string = $pref['eventpost_eventdatecustom'];
-		  break;
-	    case 2 : 
-		  $this->event_date_format_string = "%a %d %b %Y";
-		  break;
-	    case 3 : 
-		  $this->event_date_format_string = "%a %d-%m-%y";
-		  break;
-	    default : 
-		  $this->event_date_format_string = "%A %d %B %Y";
-	  }
-	  
-	  switch ($pref['eventpost_datenext'])
-	  {  // Forthcoming event date display
-	    case 0 : 
-		  $this->next_date_format_string = $pref['eventpost_nextdatecustom'];
-		  break;
-	    case 2 : 
-		  $this->next_date_format_string = "%d %b";
-		  break;
-	    case 3 : 
-		  $this->next_date_format_string = "%B %d";
-		  break;
-	    case 4 : 
-		  $this->next_date_format_string = "%b %d";
-		  break;
-	    default : 
-		  $this->next_date_format_string = "%d %B";
-	  }
-	}
-	
-	function time_string($convtime)
-	{  // Returns a time string from a time stamp, formatted as 24-hour, 12-hour or custom as set in prefs
-	  return strftime($this->time_format_string, $convtime);
-	}
-
-	function event_date_string($convdate)
-	{  // Returns a date string from a date stamp, formatted for display in event list
-	  return strftime($this->event_date_format_string,$convdate);
-	}
-	
-	
-	function next_date_string($convdate)
-	{  // Returns a date string from a date stamp, formatted for display in forthcoming event menu
-	  return strftime($this->next_date_format_string,$convdate);
-	}
-	
-	
-	function full_date($convdate)
-	{  // Returns a date as dd-mm-yyyy or yyyy-mm-dd according to prefs (for event entry)
-	  return date($this->cal_format_string, $convdate);
-	}
-	
-	function make_date($new_hour, $new_minute, $date_string)
-	{   // Turns a date as entered in the calendar into a time stamp (for event entry)
-	  global $pref;
-      $tmp = explode("-", $date_string);
-	  switch ($pref['eventpost_datedisplay'])
-	  {
-	    case 2 :
-          return  mktime($new_hour, $new_minute, 0, $tmp[1], $tmp[0], $tmp[2]);    // dd-mm-yyyy
-		case 3 :
-          return  mktime($new_hour, $new_minute, 0, $tmp[0], $tmp[1], $tmp[2]);		// mm-dd-yyyy
-		default :
-          return  mktime($new_hour, $new_minute, 0, $tmp[1], $tmp[2], $tmp[0]);		// yyyy-mm-dd
-	  }
-	}
-	
-	function cal_log($event_type, $event_title = '', $event_string='', $event_start=0)
-	{  // All calendar-related logging intentionally passed through a single point to maintain control
-	   // (so we could also add other info if we wanted)
-	   // Event types:
-	   //   1 - add event
-	   //	2 - edit event
-	   //	3 - delete event
-	   // 	4 - Bulk delete
-	  global $pref, $admin_log, $e_event, $e107;
-	  $log_titles = array(	'1' => 'Event Calendar - add event',
-							'2' => 'Event Calendar - edit event',
-							'3' => 'Event Calendar - delete event',
-							'4' => 'Event Calendar - Bulk Delete'
-							);
-// Do the notifies first
-	  $cmessage = $log_titles[$event_type]."<br />";
-	  if ($event_start > 0)
-	    $cmessage .= "Event Start: ".strftime("%d-%B-%Y",$event_start)."<br />";
-	  else
-	    $cmessage .= "Event Start unknown<br />";
-	  $edata_ec = array("cmessage" => $cmessage, "ip" => $e107->getip());
-	  switch ($event_type)
-	  {
-	    case 1 : $e_event -> trigger("ecalnew", $edata_ec);
-				 break;
-	    case 2 :
-		case 3 :
-		case 4 : $e_event -> trigger("ecaledit", $edata_ec);
-				 break;
-	  }
-
-	  switch ($pref['eventpost_adminlog'])
-	  {
-	    case 1 : if ($event_type == '1') return;
-		case 2 : break;   // Continue
-		default : return;   // Invalid or undefined option
-	  }
-	  $log_titles = array(	'1' => 'Event Calendar - add event',
-							'2' => 'Event Calendar - edit event',
-							'3' => 'Event Calendar - delete event',
-							'4' => 'Event Calendar - Bulk Delete'
-							);
-	  $admin_log->log_event($log_titles[$event_type],$event_title."&nbsp;\n".$event_string,4);
-	}
-  }
-
-?>
+<?php
+/*
+* e107 website system
+*
+* Copyright (C) 2002-2013 e107 Inc (e107.org)
+* Released under the terms and conditions of the
+* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
+*
+* Event calendar class:
+*	Pre-calculates/caches many useful values
+*	Implements functions used in most of the code
+*
+* $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/ecal_class.php $
+* $Id: ecal_class.php 13095 2013-04-11 19:47:45Z e107steved $
+*
+*/
+
+
+/*
+Preferences used:
+  eventpost_caltime			1 = server, 2 = site, 3 = user
+  eventpost_timedisplay		1 = 24 hour hhmm, 2 = 12 hour default, 3 = custom, 4 = 24 hour hh:mm
+  eventpost_timecustom		String for custom time display
+*/
+
+if (!defined('e107_INIT')) { exit; }
+
+if (!defined('EC_DEFAULT_CATEGORY')) { define('EC_DEFAULT_CATEGORY','Default'); }
+
+include_lan(e_PLUGIN.'calendar_menu/languages/'.e_LANGUAGE.'_class.php');
+
+
+/**
+ *	Class of useful data and functions for the event calendar plugin
+ *	Included in all application files
+ */
+class ecal_class
+{
+	// Useful time/date variables - set up on creation, and available externally
+	// (All the times and dates are consistent, being derived from $time_now, which is the time the constructor was
+	// called - probably doesn't matter, but may help someone.
+	var $time_now;						// Current time/date stamp ('clock time')
+
+	var $site_timedate;					// Site time/date stamp - adjusted for time zone
+	var $user_timedate;					// Time/date based on user's time zone
+	var $cal_timedate;					// Time/date stamp used by event calendar (user set)
+	var $now_date;						// Time/date array from $time_now
+	var $site_date;						// Time/date array from $site_timedate
+	var $cal_date;						// Time/date array from $cal_timedate
+	
+	var $cal_super;						// True if current user is a calendar supervisor
+	var $extra_query;					// Extra bit of mysql query used for non-supervisor (read) queries
+	
+	var $time_format_string;			// String to format times on the site
+	var $cal_format_string;				// String to format the displayed date on event entry ("Y-m-d" or "d-m-Y")
+	var $dcal_format_string;			// Format string to pass to DHTML calendar
+	var $java_format_code;				// Code to pass to Javascript re date format
+	
+	var $event_date_format_string;		// String to format the date in the event calendar
+	var $next_date_format_string;		// String to format the date in the 'forthcoming event' menu
+	
+	var $date_separator = '-';			// Used for separating off fields on date entry
+	
+	var $max_cache_time;				// Oldest permissible age of any cached pages relating to event calendar
+	var $max_recent_show;				// Time in seconds for highlighting 'recent events' (0 = disable)
+	var $cat_text_cache = array();		// Used to cache category text as read
+	
+	var $ec_first_day_of_week = 0;		// First day of the week
+	var $days = array(EC_LAN_25, EC_LAN_19, EC_LAN_20, EC_LAN_21, EC_LAN_22, EC_LAN_23, EC_LAN_24);	// Array Sunday..Saturday
+	var $months	= array(EC_LAN_0, EC_LAN_1, EC_LAN_2, EC_LAN_3, EC_LAN_4, EC_LAN_5, EC_LAN_6,
+						EC_LAN_7, EC_LAN_8, EC_LAN_9, EC_LAN_10, EC_LAN_11);		// 'Long' month names
+
+	public $recur_type = array(
+				'0' => EC_LAN_RECUR_00,		// 'no'
+				'1' => EC_LAN_RECUR_01,		//'annual'
+				'2' => EC_LAN_RECUR_02,		//'biannual'
+				'3' => EC_LAN_RECUR_03,		//'quarterly'
+				'4' => EC_LAN_RECUR_04,		//'monthly'
+				'5' => EC_LAN_RECUR_05,		//'four weekly'
+				'6' => EC_LAN_RECUR_06,		//'fortnightly'
+				'7' => EC_LAN_RECUR_07,		// 'weekly'
+				'8' => EC_LAN_RECUR_00,		// 'daily'
+				'100' => EC_LAN_RECUR_100,	// 'Sunday in month'
+				'101' => EC_LAN_RECUR_101,	// 'Monday in month'
+				'102' => EC_LAN_RECUR_102,	// 'Tuesday in month'
+				'103' => EC_LAN_RECUR_103,	// 'Wednesday in month'
+				'104' => EC_LAN_RECUR_104,	// 'Thursday in month'
+				'105' => EC_LAN_RECUR_105,	// 'Friday in month'
+				'106' => EC_LAN_RECUR_106	// 'Saturday in month'
+				);
+	var $recur_week = array(
+				'100' => EC_LAN_RECUR_1100,	//'First'
+				'200' => EC_LAN_RECUR_1200,	//'Second' 
+				'300' => EC_LAN_RECUR_1300,	// 'Third'
+				'400' => EC_LAN_RECUR_1400	// 'Fourth'
+				);
+
+
+	function ecal_class()
+	{  // Constructor
+		global $pref;
+
+		if (!isset($pref['plug_installed']['calendar_menu']))
+		{
+			header('Location: '.e_BASE.'index.php');
+			exit;
+		}
+
+		// Get all the times in terms of 'clock time' - i.e. allowing for TZ, DST, etc
+		// All the times in the DB should be 'absolute' - so if we compare with 'clock time' it should work out.
+		$this->time_now = $this->clockToAbs(time());
+		$this->site_timedate = $this->time_now + ($pref['time_offset'] * 3600);			// Check sign of offset
+		$this->user_timedate = $this->time_now + TIMEOFFSET;
+		switch ($pref['eventpost_caltime'])
+		{
+			case 1 :
+				$this->cal_timedate  = $this->site_timedate;		// Site time
+				break;
+			case 2 :
+				$this->cal_timedate  = $this->user_timedate;		// User
+				break;
+			default :
+				$this->cal_timedate = $this->time_now;			// Server time - default
+		}
+		$this->now_date  = getdate($this->time_now);
+		$this->site_date = getdate($this->site_timedate);	// Array with h,m,s, day, month year etc
+		$this->cal_date  = getdate($this->cal_timedate);
+
+		$this->max_cache_time = $this->site_date['minutes'] + 60*$this->site_date['hours'];
+
+		$this->cal_super = check_class($pref['eventpost_super']);
+		if ($this->cal_super) $this->extra_query = ""; else $this->extra_query = " AND find_in_set(event_cat_class,'".USERCLASS_LIST."')";
+
+		$this->max_recent_show = 0;
+		if (isset($pref['eventpost_recentshow']))
+		{
+			if ($pref['eventpost_recentshow'] == 'LV')
+			{
+				if (USER) $this->max_recent_show = time() - USERLV;
+			}
+			else
+			{
+				$this->max_recent_show = 3600 * $pref['eventpost_recentshow'];
+			}
+		}
+
+		switch ($pref['eventpost_timedisplay'])
+		{
+			case 2 : 
+				$this->time_format_string = "%I:%M %p";      // 12-hour display
+				break;
+			case 3 :
+				$this->time_format_string = $pref['eventpost_timecustom'];      // custom display
+				if (isset($this->time_format_string)) break;
+			case 4 : 
+				$this->time_format_string = "%H:%M";      // 24-hour display with separator
+				break;
+			default :
+				$this->time_format_string = "%H%M";      // default to 24-hour display
+		}
+
+		if (!isset($pref['eventpost_datedisplay'])) $pref['eventpost_datedisplay'] = 1;
+		$temp = $pref['eventpost_datedisplay'];
+		if ($temp >3) 
+		{
+			$temp-= 3;
+			$this->date_separator = '.';
+			if ($temp > 3)
+			{
+				$temp -= 3;
+				$this->date_separator = '/';
+			}
+		}
+
+		switch ($temp)
+		{  // Event entry calendar
+			case 2 :
+				$this->cal_format_string = "d".$this->date_separator."m".$this->date_separator."Y";
+				$this->dcal_format_string = "%d".$this->date_separator."%m".$this->date_separator."%Y";
+				$this->java_format_code = 2;
+				break;
+			case 3 :
+				$this->cal_format_string = "m".$this->date_separator."d".$this->date_separator."Y";
+				$this->dcal_format_string = "%m".$this->date_separator."%d".$this->date_separator."%Y";
+				$this->java_format_code = 3;
+				break;
+			default :  // 'original' defaults
+				$this->cal_format_string = "Y".$this->date_separator."m".$this->date_separator."d";
+				$this->dcal_format_string = "%Y".$this->date_separator."%m".$this->date_separator."%d";
+				$this->java_format_code = 1;
+		}
+
+		if (!isset($pref['eventpost_dateevent'])) $pref['eventpost_dateevent'] = 1;
+		switch ($pref['eventpost_dateevent'])
+		{  // Event list date display
+			case 0 :
+				$this->event_date_format_string = $pref['eventpost_eventdatecustom'];
+				break;
+			case 2 : 
+				$this->event_date_format_string = "%a %d %b %Y";
+				break;
+			case 3 : 
+				$this->event_date_format_string = "%a %d-%m-%y";
+				break;
+			default : 
+				$this->event_date_format_string = "%A %d %B %Y";
+		}
+
+		if (!isset($pref['eventpost_datenext'])) $pref['eventpost_datenext'] = 1;
+		switch ($pref['eventpost_datenext'])
+		{  // Forthcoming event date display
+			case 0 : 
+				$this->next_date_format_string = $pref['eventpost_nextdatecustom'];
+				break;
+			case 2 : 
+				$this->next_date_format_string = "%d %b";
+				break;
+			case 3 : 
+				$this->next_date_format_string = "%B %d";
+				break;
+			case 4 : 
+				$this->next_date_format_string = "%b %d";
+				break;
+			default : 
+				$this->next_date_format_string = "%d %B";
+		}
+
+		switch (varset($pref['eventpost_weekstart'],'sun'))
+		{
+			case  'sun' : $this->ec_first_day_of_week = 0; break;
+			case  'mon' : $this->ec_first_day_of_week = 1; break;
+			case 0 :
+			case 1 :
+			case 2 :
+			case 3 :
+			case 4 :
+			case 5 :
+			case 6 :
+				$this->ec_first_day_of_week = $pref['eventpost_weekstart']; break;
+			default :
+				$this->ec_first_day_of_week = 1;
+		}
+	}
+
+
+
+	/**
+	 *	Returns a time string from a time stamp, formatted as 24-hour, 12-hour or custom as set in prefs
+	 */
+	function time_string($convtime)
+	{
+		return gmstrftime($this->time_format_string, $convtime);
+	}
+
+
+	/**
+	 *	Returns a date string from a date stamp, formatted for display in event list
+	 */
+	function event_date_string($convdate)
+	{
+		return gmstrftime($this->event_date_format_string,$convdate);
+	}
+	
+	
+	/**
+	 *	Returns a date string from a date stamp, formatted for display in forthcoming event menu
+	 */
+	function next_date_string($convdate)
+	{
+		return gmstrftime($this->next_date_format_string,$convdate);
+	}
+	
+	
+	/**
+	 *	Returns a date as dd-mm-yyyy or yyyy-mm-dd according to prefs (for event entry)
+	 */
+	function full_date($convdate)
+	{
+		return gmdate($this->cal_format_string, $convdate);
+	}
+
+
+	/**
+	 *	Turns a date as entered in the calendar into a time stamp (for event entry)
+	 */
+	function make_date($new_hour, $new_minute, $date_string)
+	{
+		$tmp = explode($this->date_separator, $date_string);
+		switch ($this->java_format_code)
+		{
+			case 2 :
+				return  gmmktime($new_hour, $new_minute, 0, $tmp[1], $tmp[0], $tmp[2]); 	// dd-mm-yyyy
+			case 3 :
+				return  gmmktime($new_hour, $new_minute, 0, $tmp[0], $tmp[1], $tmp[2]);		// mm-dd-yyyy
+			default :
+				return  gmmktime($new_hour, $new_minute, 0, $tmp[1], $tmp[2], $tmp[0]);		// yyyy-mm-dd
+		}
+	}
+	
+	/**
+	 *	Return day of week string relative to the start of the week
+	 */
+	function day_offset_string($doff)
+	{
+		return $this->days[($doff+$this->ec_first_day_of_week) % 7];
+	}
+
+
+	/**
+	 *	Single entry point for all calendar-related logging.
+	 *
+	 *	Also triggers a 'notify' event:
+	 *		'ecalnew' when single or multiple events added
+	 *		'ecaledit' when an event changed or deleted
+	 *
+	 *	@param integer $event_type - type of event being logged:
+	 *		1 - add event
+	 *  	2 - edit event
+	 *  	3 - delete event
+	 *  	4 - Bulk delete
+	 *  	5 - add multiple events
+	 *	@param string $event_title - included in logged message
+	 *	@param string $event_string - included in logged message
+	 *	@param integer $event_start - start time of event where appropriate
+	 *
+	 *	@return - none
+	 */
+	function cal_log($event_type, $event_title = '', $event_string='', $event_start=0, $eventId = 0)
+	{
+		global $pref, $admin_log, $e_event, $PLUGINS_DIRECTORY;
+	  
+		$log_titles = array('1' => EC_ADM_01,
+							'2' => EC_ADM_02,
+							'3' => EC_ADM_03,
+							'4' => EC_ADM_04,
+							'5' => EC_ADM_05,
+							'6' => EC_ADM_06,
+							'7' => EC_ADM_07,
+							'8' => EC_ADM_08,
+							'9' => EC_ADM_09,
+							'10' => EC_ADM_10,
+							'11' => EC_ADM_11
+							);
+
+		// Do the notifies first
+		$cmessage = $log_titles[$event_type]."<br />";
+		if ($event_start > 0)
+		{
+			$cmessage .= 'Event Start: '.strftime("%d-%B-%Y",$event_start)."<br />";
+			$cmessage .= 'Event Link:  '.$pref['siteurl'].$PLUGINS_DIRECTORY. "calendar_menu/event.php?".$event_start.'.event.'.$eventId.' <br />';
+		}
+		else
+			$cmessage .= "Event Start unknown<br />";
+		$edata_ec = array("cmessage" => $cmessage, "ip" => getip());
+		switch ($event_type)
+		{
+			case 5 :
+			case 1 : 
+				$e_event -> trigger("ecalnew", $edata_ec);
+				break;
+			case 2 :
+			case 3 :
+			case 4 : 
+				$e_event -> trigger("ecaledit", $edata_ec);
+				break;
+		}
+
+		switch ($pref['eventpost_adminlog'])
+		{
+			case 1 : if ($event_type == '1') return;
+			case 2 : break;   // Continue
+			default : return;   // Invalid or undefined option
+		}
+		$logDetail = $log_titles[$event_type];
+		if  ($event_start > 0) $logDetail .= ' '.strftime('%d-%B-%Y',$event_start);
+		$admin_log->log_event($log_titles[$event_type],$event_title."&nbsp;\n".$logDetail."\n".$event_string,4);
+	}
+
+
+
+	/**
+	 *	Get text related to a numeric event category
+	 */
+	function get_category_text($ev_cat)
+	{
+		global $sql;
+		if (!isset($this->cat_text_cache[$ev_cat]))
+		{
+			$sql->db_Select('event_cat','event_cat_name',"event_cat_id='{$ev_cat}'");
+			$row = $sql->db_Fetch();
+			$this->cat_text_cache[$ev_cat] = $row['event_cat_name'];
+		}
+		return $this->cat_text_cache[$ev_cat];
+	}
+
+
+
+
+	/**
+	 *	Implements a version of getdate that expects a GMT date and doesn't do TZ/DST adjustments
+	 *	time() -date('Z') gives the correction to 'null out' the TZ and DST adjustments that getdate() does
+	 */
+	function gmgetdate($date)
+	{
+		$value = getdate($date-date('Z') + (date('I') ? 3600 : 0));
+		
+		$value['month'] = $this->months[$value['mon'] - 1];		// Looks like getdate doesn't use the specified site language
+		return $value;
+	}
+
+
+	/**
+	 *	Turn a 'clock time' into an absolute time
+	 */
+	function clockToAbs($val)
+	{
+		$temp = getdate($val);
+		$temp['month'] = $this->months[$temp['mon'] - 1];		// Looks like getdate doesn't use the specified site language
+		return gmmktime($temp['hours'], $temp['minutes'], $temp['seconds'], $temp['mon'], $temp['mday'], $temp['year']);
+	}
+
+
+//------------------------------------------------
+//		Recurring event handling
+//------------------------------------------------
+
+
+	/**
+	 *	Generate a list of regularly recurring events based on a 'first event' date, an interval and start/finish times
+	 *	Returns an array of start times
+	 *
+	 *	All fields are Unix-style time/date stamps
+	 *	@param int $first_event	Earliest possible date/time for first occurrence of event (may not be precisely what's required)
+	 *	@param int $last_event
+	 *	@param int $interval - interval between events (in seconds)
+	 *	@param int $start_time
+	 *	@param int $end_time - last date in time window
+	 *
+	 *	@return array of start date/time entries
+	 */
+	function gen_recur_regular($first_event, $last_event, $interval, $start_time, $end_time)
+	{
+		if ($last_event < $end_time) $end_time = $last_event;
+		$ret = array();
+		$first_event = $first_event + ceil(($start_time-$first_event)/$interval)*$interval;
+		while ($first_event <= $end_time)
+		{
+			$ret[] = $first_event;
+			$first_event += $interval;
+		}
+		return $ret;
+	}
+
+
+	/**
+	 * Internal utility - adds an offset of months and years to a date
+	 * @param array $main_date - a date in PHP standard array format
+	 * @param array $adder - a month+year offset in PHP standard array format
+	 *
+	 * @return array where 'mon' and 'year' fields filled in
+	 */
+	function add_dates($main_date,$adder)
+	{
+		if ($adder['mon'])
+		{
+			$main_date['mon'] += $adder['mon'];
+			if ($main_date['mon'] > 12)
+			{
+				$main_date['mon'] -= 12;
+				$main_date['year']++;
+			}
+		}
+		if ($adder['year']) $main_date['year'] += $adder['year'];
+		return $main_date;
+	}
+
+	
+	/**
+	 *	Generate a list of recurring events based on a 'first event' date, an interval type and start/finish window
+	 *	Returns an array of start times
+	 *
+	 *	For day number, '0' = 'Sunday'
+	 *
+	 *	$first_event, $last_event are the start/end dates from the definition of the recurring event in the DB
+	 *	$start_time, $end_time define the window currently of interest (usually a month)
+	 *
+	 *	All parameters are Unix time stamps or numbers of seconds
+	 *	@param int $first_event - earliest date for events
+	 *	@param int $last_event - latest time for date of event
+	 *	@param int $interval_type - numeric code defining the interval between events (N.B> day number zero is Sunday)
+	 *	@param int $start_time - start time for each event
+	 *	@param int $end_time - end time for each event
+	 *
+	 *	@return array of events (may be empty)
+	 */
+	function gen_recur($first_event, $last_event, $interval_type, $start_time, $end_time)
+	{
+		if ($last_event < $end_time) $end_time = $last_event;
+		$ret = array();
+		$week_offset = 0;
+		if ($interval_type >= 100)
+		{
+			$week_offset = intval($interval_type /100);
+			$day_number = $interval_type % 10;				// Gives 0..6 in practice; potentially 0..9
+			$interval_type = 100;
+		}
+		if ($first_event > $end_time) return $ret;
+
+		$interval = array('5' => 28*86400, '6' => 14*86400, '7' => 7*86400, '8' => 86400);
+		// Do the easy ones first
+		if (array_key_exists($interval_type, $interval)) 
+		{
+			return $this->gen_recur_regular($first_event, $last_event, $interval[$interval_type], $start_time, $end_time);
+		}
+
+		// We're messing around with months and years here
+		$inc_array['year'] = 0;
+		$inc_array['mon'] = 0;
+
+		// Find the first date which is within, or close to, scope (N.B. may not be one)
+		$event = $this->gmgetdate($first_event);
+		$temp = $this->gmgetdate($start_time);
+		$event['year'] = $temp['year'];		// Use the year from the start window
+		if ($event['mon'] > $temp['mon']) $event['year']--;		// Handle situation where event later in year than desired window
+
+		switch ($interval_type)
+		{
+			case 1 :	// Annual
+				$inc_array['year'] = 1;
+				break;
+			case 2 :	// Biannual
+				$inc_array['mon'] = 6;
+				break;
+			case 3 :	// Quarterly
+				$inc_array['mon'] = 3;
+				break;
+			case 4 :	// Monthly
+				$inc_array['mon'] = 1;
+				break;
+			case 100 :	// Monthly on nth Sunday in month
+			case 101 :	// Monthly on nth Monday in month
+			case 102 :	// Monthly on nth Tuesday in month
+			case 103 :	// Monthly on nth Wednesday in month
+			case 104 :	// Monthly on nth Thursday in month
+			case 105 :	// Monthly on nth Friday in month
+			case 106 :	// Monthly on nth Saturday in month
+				//		  echo "Specific day of month: ".$day_number."<br />";
+				$inc_array['mon'] = 1;
+				$event['mon'] = $temp['mon'];
+				$event['year'] = $temp['year'];
+				$event['mday'] = 1;		// Start calculating from first day of each month
+				break;
+			default :
+				return FALSE;		// Invalid interval type
+		}
+
+		//	  echo "First date: ".$event['mon']."-".$event['year']."<br />";
+		// Now loop through using the increment - we may discard a few, but getting clever may be worse!
+		$cont = TRUE;
+	  
+		do 
+		{
+			$tstamp = gmmktime($event['hours'],$event['minutes'],$event['seconds'],$event['mon'],$event['mday'],$event['year']);
+			if ($interval_type >= 100)
+			{	// $tstamp has the first of the month
+				$day_diff = $day_number - gmdate('w',$tstamp);
+				if ($day_diff <0) $day_diff += 7;
+				$day_diff += (7 * $week_offset) - 7;
+				$tstamp += $day_diff*86400;
+			}
+			if ($tstamp >= $start_time)
+			{
+				if ($tstamp <= $end_time)
+				{
+					$ret[] = $tstamp;
+				}
+				else
+				{
+					$cont = FALSE;
+				}
+			}
+			$event = $this->add_dates($event,$inc_array);
+		} while ($cont);
+
+		return $ret;
+	}
+
+
+
+	/**
+	 *	Generate comma separated list of fields for table, with optional alias prefix.
+	 *
+	 *	@param string $table - optional table name/alias (prefixed to each field name if specified)
+	 *	@param string $list - comma separated list of required fields
+	 *	@param string $must_have - comma-separated list of mandatory fields - always included in the list
+	 *
+	 *	@return string comma-separated list of fields for use in query
+	 */
+	function gen_field_list($table, $list, $must_have = '')
+	{
+		if ($list == '*') return $table ? $table.".*" : '*';
+		$ret = '';
+		$pad = '';
+		$temp = explode(',',$list);
+		for ($i = 0; $i < count($temp); $i++) $temp[$i] = trim($temp[$i]);
+		if ($must_have)
+		{
+			$mharr = explode(',',$must_have);
+			foreach ($mharr as $mh)
+			{
+				if (!in_array(trim($mh), $temp)) $temp[] = trim($mh);
+			}
+		}
+		foreach ($temp as $fld)
+		{
+			if ($fld)
+			{
+				if ($table) $fld = $table.'.'.$fld;
+				$ret .= $pad.$fld;
+				$pad = ', ';
+			}
+		}
+		return $ret;
+	}
+
+
+
+	/**
+	 *	Return all events between a given start and end date
+	 *	If $start_only is TRUE, only searches based on the start date/time
+	 *	Potential option to hook in other routines here later
+	 *	@param int $start_time - earliest time for events
+	 *	@param int $end_time - latest time for start of event
+	 *	@param boolean $start_only - TRUE to scan based on start time only. FALSE to select events which overlap the specified time window
+	 *	@param boolean|string $cat_filter = FALSE is 'no categories' - returns an empty array.
+	 * 					$cat_filter = '*' means 'all categories'
+	 * 					otherwise $cat_filter mst be a comma-separated list of category IDs.
+	 *	@param string $event_fields - comma separated list of fields to read from the event record; '*' for all fields
+	 *	@param string $cat_fields - comma separated list of fields to read from the category record; '*' for all fields
+	 *
+	 *	@return array of events (may be empty)
+	 */
+	function get_events($start_time, $end_time, $start_only=FALSE, $cat_filter=0, $inc_recur=FALSE, $event_fields='*', $cat_fields='*')
+	{
+		global $sql;
+	  
+		$ret = array();
+		$cat_lj = '';
+		$category_filter = '';
+		$extra = '';
+		$so = '';
+
+		$event_fields = $this->gen_field_list('e',$event_fields,'event_start,event_end,event_datestamp');
+		if ($cat_fields) 
+		{
+			$cat_fields = ', '.$this->gen_field_list('ec',$cat_fields);
+			$cat_lj = ' LEFT JOIN #event_cat as ec ON e.event_category = ec.event_cat_id ';
+		}
+
+		if ($cat_filter && ($cat_filter != '*')) $category_filter = " AND find_in_set(e.event_category, '".$cat_filter."') ";
+		if ($inc_recur) $extra = " OR (e.event_recurring >'0' AND (e.event_start < ".intval($end_time)." AND e.event_end >= ".intval($start_time).")) ";
+	  
+		$so = $start_only ? 'start' : 'end';
+		$qry = "SELECT {$event_fields}{$cat_fields} FROM #event as e {$cat_lj}
+			WHERE (
+			(e.event_recurring = '0' AND ((e.event_{$so} >= ".intval($start_time)." AND e.event_start < ".intval($end_time).")))
+			{$extra})
+			{$category_filter} 
+			{$this->extra_query} 
+			ORDER BY e.event_start ASC
+		  ";
+	  
+		if ($sql->db_Select_gen($qry))
+		{
+			while ($row = $sql->db_Fetch())
+			{
+				// Always add the 'is_recent' marker if required
+				if ((($this->max_recent_show != 0) && (time() - $row['event_datestamp']) <= $this->max_recent_show)) $row['is_recent'] = TRUE; 
+				if ($row['event_recurring'] == 0)
+				{
+					$ret[] = $row;
+				}
+				else
+				{  // Recurring events to handle
+					$temp = $this->gen_recur($row['event_start'],$row['event_end'],$row['event_recurring'],$start_time,$end_time);
+					if (count($temp)) 
+					{
+						$row['event_start'] = $temp;		// Have an array of start times
+						$ret[] = $row;
+					}
+				}
+			}
+		}
+		return $ret;
+	}
+
+
+
+
+	/**
+	 * Function to return up to a maximum number of events between a given start and end date
+	 *  It always uses the event start date only
+	 * It tries to keep the actual number of events in memory to a minimum by discarding when it can.
+	 * Once there are $num_events read, it pulls in the $end_time to speed up checks
+	 * @param int $num_event - number of events required
+	 * @param int $start_time - earliest time for events
+	 * @param int $end_time - latest time for start of event
+	 * @param boolean|string $cat_filter = FALSE is 'no categories' - returns an empty array.
+	 * 					$cat_filter = '*' means 'all categories'
+	 * 					otherwise $cat_filter mst be a comma-separated list of category IDs.
+	 * @param boolean $inc_recur TRUE to include recurring events
+	 * @param string $event_fields - comma separated list of fields to read from the event record; '*' for all fields
+	 * @param string $cat_fields - comma separated list of fields to read from the category record; '*' for all fields
+	 *
+	 * @return array of events (may be empty)
+	 */
+	function get_n_events($num_event, $start_time, $end_time, $cat_filter=0, $inc_recur=FALSE, $event_fields='*', $cat_fields='*')
+	{
+		global $sql;
+
+		$ret = array();
+		$cat_lj = '';
+		$category_filter = '';
+		$extra = '';
+
+		$event_fields = $this->gen_field_list('e',$event_fields,'event_start,event_end,event_datestamp,event_recurring');
+		if ($cat_fields) 
+		{
+			$cat_fields = ', '.$this->gen_field_list('ec',$cat_fields);
+			$cat_lj = ' LEFT JOIN #event_cat as ec ON e.event_category = ec.event_cat_id ';
+		}
+	  
+		if ($cat_filter && ($cat_filter != '*')) $category_filter = " AND find_in_set(e.event_category, '".$cat_filter."') ";
+		if ($inc_recur) $extra = " OR (e.event_recurring >'0' AND (e.event_start <= ".intval($end_time)." AND e.event_end >= ".intval($start_time).")) ";
+	
+		$qry = "SELECT {$event_fields}{$cat_fields} FROM #event as e {$cat_lj}
+			WHERE (
+			(e.event_recurring = '0' AND (e.event_start >= ".intval($start_time)." AND e.event_start <= ".intval($end_time).") )
+			{$extra})
+			{$category_filter} 
+			{$this->extra_query} 
+			ORDER BY e.event_start ASC
+		  ";
+	  
+		//	echo "get_n_events Query: ".$qry."<br />";
+	
+		if ($sql->db_Select_gen($qry))
+		{
+			while ($row = $sql->db_Fetch())
+			{
+				// Always add the 'is_recent' marker if required
+				if ((($this->max_recent_show != 0) && (time() - $row['event_datestamp']) <= $this->max_recent_show)) $row['is_recent'] = TRUE; 
+				unset($temp);
+				if ($row['event_recurring'] == 0)
+				{	
+					//	echo "Standard:  ".$row['event_start']."  ".$row['event_title']."<br />";
+					$temp = array($row['event_start']);
+				}
+				else
+				{  // Recurring events to handle
+					//	echo "Recurring: ".$row['event_start']."  ".$row['event_title']."  -   ".$row['event_recurring']."  -  ";
+					$temp = $this->gen_recur($row['event_start'],$row['event_end'],$row['event_recurring'],$start_time,$end_time);
+					//		echo count($temp)."results generated<br />";
+				}
+
+				if (count($temp)) 
+				{  // We have one or more events to add to the array
+					foreach ($temp as $ts)
+					{
+						//	echo "Process:  ".$ts."  ".$row['event_start']."  ".$row['event_title']."  ".$end_time."<br />";
+						if ($ts <= $end_time)   // We may have pulled in $end_time from the value passed initially
+						{
+							$row['event_start'] = $ts;			// Fill this in - may be a recurring event
+							//		  echo "Add: ".$row['event_start']."  ".$row['event_title']."<br />";
+
+							if ((count($ret) == 0) || ($ts > $ret[count($ret)-1]['event_start']))
+							{  // Can just add on end
+								//			echo "Add at end<br />";
+								$ret[] = $row;
+							}
+							else
+							{  // Find a slot
+								$i = count($ret);
+								while (($i > 0) && ($ret[$i-1]['event_start'] > $ts)) $i--;
+								// $i has the number of the event before which to insert this new event.
+								if ($i == 0)
+								{
+									array_unshift($ret,$row);	// Just insert at beginning
+									//		echo "Insert at front<br />";
+								}
+								else
+								{  // Proper insert needed just before element $i
+									//		$tmp = array_unshift(array_slice($ret, $i),$row);
+									//		array_splice($ret, $i, count($ret), $tmp); 
+									array_splice($ret, $i, count($ret), array_merge(array($row),array_slice($ret, $i))); 
+									//		echo "Insert at ".$i."<br />";
+								}
+							}
+						}
+						if (count($ret) > $num_event)
+						{  // Knock one off the end
+							//			    echo "Delete, count is ".count($ret)."<br />";
+							if ($ret[count($ret)-1]['event_start'] < $end_time) $end_time = $ret[count($ret)-1]['event_start'];	// Pull in end time if we can
+							array_pop($ret);
+						}
+					}
+				}
+			}
+		}
+		return $ret;
+	} // End - function get_n_events()
+
+
+
+
+	/**
+	 * Get text relating to recurring item
+	 * @param int numeric code for type of recurring item
+	 *
+	 * @return string corresponding text description
+	 */
+	function get_recur_text($recurring)
+	{
+		if ($recurring >= 100)
+		{
+			return $this->recur_week[100*intval($recurring/100)].' '.$this->recur_type[100+($recurring % 10)];
+		}
+		else
+		{
+			return $this->recur_type[$recurring];
+		}
+	}
+	  
+}// End - class definition
+
+?>
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/ec_mailout_template.php 1.0.4.src/e107_plugins/calendar_menu/ec_mailout_template.php
--- 1.0.2.src/e107_plugins/calendar_menu/ec_mailout_template.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.0.4.src/e107_plugins/calendar_menu/ec_mailout_template.php	2013-09-26 16:49:50.000000000 -0500
@@ -0,0 +1,66 @@
+<?php
+/*
+ * e107 website system
+ *
+ * Copyright (C) 2002-2012 e107 Inc (e107.org)
+ * Released under the terms and conditions of the
+ * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
+ *
+ * Event calendar - event entry and display
+ *
+ * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/usersettings.php $
+ * $Id: usersettings.php 11645 2010-08-01 12:57:11Z e107coders $
+
+This template is used during the subscription mailouts - it is inserted at the front of the text
+defined for each category.
+Main purpose is to define the 'pre' and 'post' styles, but it can be used much as any E107 template
+*/
+if (!defined('e107_INIT')) { exit; }
+
+$sc_style['EC_MAIL_HEADING_DATE']['pre'] = "";
+$sc_style['EC_MAIL_HEADING_DATE']['post'] = "";
+
+$sc_style['EC_MAIL_SHORT_DATE']['pre'] = "";
+$sc_style['EC_MAIL_SHORT_DATE']['post'] = "";
+
+$sc_style['EC_MAIL_TITLE']['pre'] = "";
+$sc_style['EC_MAIL_TITLE']['post'] = "";
+
+$sc_style['EC_MAIL_ID']['pre'] = "";
+$sc_style['EC_MAIL_ID']['post'] = "";
+
+$sc_style['EC_MAIL_DETAILS']['pre'] = "";
+$sc_style['EC_MAIL_DETAILS']['post'] = "";
+
+$sc_style['EC_MAIL_LOCATION']['pre'] = EC_LAN_32." ";
+$sc_style['EC_MAIL_LOCATION']['post'] = "";
+
+$sc_style['EC_MAIL_AUTHOR']['pre'] = EC_LAN_31." ";
+$sc_style['EC_MAIL_AUTHOR']['post'] = "";
+
+$sc_style['EC_MAIL_CONTACT']['pre'] = EC_LAN_33." ";
+$sc_style['EC_MAIL_CONTACT']['post'] = "";
+
+$sc_style['EC_MAIL_THREAD']['pre'] = "";
+$sc_style['EC_MAIL_THREAD']['post'] = "";
+
+$sc_style['EC_MAIL_LINK']['pre'] = "";
+$sc_style['EC_MAIL_LINK']['post'] = "";
+
+$sc_style['EC_MAIL_CATEGORY']['pre'] = "";
+$sc_style['EC_MAIL_CATEGORY']['post'] = "";
+
+$sc_style['EC_MAIL_DATE_START']['pre'] = (isset($thisevent['event_allday']) && $thisevent['event_allday']) ? EC_LAN_68." " : EC_LAN_29." ";
+$sc_style['EC_MAIL_DATE_START']['post'] = "";
+
+$sc_style['EC_MAIL_TIME_START']['pre'] = EC_LAN_144;
+$sc_style['EC_MAIL_TIME_START']['post'] = "";
+
+$sc_style['EC_MAIL_DATE_END']['pre'] = EC_LAN_69." ";
+$sc_style['EC_MAIL_DATE_END']['post'] = "";
+
+$sc_style['EC_MAIL_TIME_END']['pre'] = EC_LAN_144;
+$sc_style['EC_MAIL_TIME_END']['post'] = "";
+
+
+?>
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/ec_pf_page.php 1.0.4.src/e107_plugins/calendar_menu/ec_pf_page.php
--- 1.0.2.src/e107_plugins/calendar_menu/ec_pf_page.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.0.4.src/e107_plugins/calendar_menu/ec_pf_page.php	2013-09-26 16:49:50.000000000 -0500
@@ -0,0 +1,422 @@
+<?php
+/*
+ * e107 website system
+ *
+ * Copyright (C) 2002-2013 e107 Inc (e107.org)
+ * Released under the terms and conditions of the
+ * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
+ *
+ * Event calendar - event entry and display
+ *
+ * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/usersettings.php $
+ * $Id: usersettings.php 11645 2010-08-01 12:57:11Z e107coders $
+ *
+ * Generate a printer-friendly page of calendar events
+ * Query is: ec_pf_page.php?ssssss.eeeeee[[[.cat].template].output]
+ *
+ * Date format is yyyymmdd or yyyymm to make it easy to generate fixed queries.
+ * cat is a number corresponding to a category ID. '*' or blank gives all categories
+ * template determines output style ('*' selects the default template)
+ * output can be 'display' (default), 'print' or 'pdf'
+ *
+ * Mostly the template can use the EVENT and MAIL shortcodes - pretty much anything that
+ * uses $thisevent as a parameter. MAIL is best since it's never used elsewhere at the same time
+*/
+
+require_once("../../class2.php");
+if (!isset($pref['plug_installed']['calendar_menu'])) header("Location: ".e_BASE."index.php");
+include_lan(e_PLUGIN."calendar_menu/languages/".e_LANGUAGE.".php");
+define("PAGE_NAME", EC_LAN_80);
+
+require_once(e_PLUGIN.'calendar_menu/ecal_class.php');
+$ecal_class = new ecal_class;
+
+require_once(e_PLUGIN."calendar_menu/calendar_shortcodes.php");
+
+$message = "";
+unset($ec_qs);
+if (e_QUERY) $ec_qs = explode(".", e_QUERY); 
+else
+{
+  if (!isset($pref['eventpost_printlists']) || ($pref['eventpost_printlists'] == 0))
+    header("location:".SITEURL);   // If disabled, just go back to index page
+}
+
+if (isset($_POST['set_dates']) && isset($_POST['start_date']) && (isset($_POST['end_date'])))
+{
+  $ec_qs[0] = $_POST['start_date'];
+  $ec_qs[1] = $_POST['end_date'];
+  if (isset($_POST['event_cat_ids']))
+  {
+    $ec_qs[2] = $_POST['event_cat_ids'];
+	if ($ec_qs[2] == 'all') $ec_qs[2] = '*';
+  }
+  if (isset($_POST['template_choice'])) $ec_qs[3] = $_POST['template_choice'];
+}
+
+if (!isset($ec_qs[3])) $ec_qs[3] = 'default';		// Template
+
+if (isset($_POST['output_type'])) $ec_qs[4] = $_POST['output_type'];
+if (!isset($ec_qs[4]) || (($ec_qs[4]) != 'print') && ($ec_qs[4] != 'pdf') ) $ec_qs[4] = 'display';
+
+
+
+global $cal_super, $calendar_shortcodes;
+$cal_super = $ecal_class->cal_super;
+
+// Get templates, since we may have to give a choice if we're displaying something
+// Actually load three in order so they can accumulate, and give the option of overriding other settings
+$EVENT_CAL_PDF_HEADER = array();
+$EVENT_CAL_PDF_BODY   = array();
+$EVENT_CAL_PDF_FOOTER = array();
+if (is_readable(e_PLUGIN."calendar_menu/ec_pf_template.php")) require_once(e_PLUGIN."calendar_menu/ec_pf_template.php");
+if (is_readable(e_PLUGIN."calendar_menu/ec_pf_user_template.php")) require_once(e_PLUGIN."calendar_menu/ec_pf_user_template.php");
+if (is_readable(THEME."ec_pf_template.php")) require_once(THEME."ec_pf_template.php");
+
+// Hard-coded alternatives
+if (!count($EVENT_CAL_PDF_HEADER)) $EVENT_CAL_PDF_HEADER['default'] = "<br />";
+if (!count($EVENT_CAL_PDF_BODY))   $EVENT_CAL_PDF_BODY['default']   = "{EC_MAIL_DATE_START} {EC_MAIL_TIME_START}  {EC_MAIL_TITLE}<br />";
+if (!count($EVENT_CAL_PDF_FOOTER)) $EVENT_CAL_PDF_FOOTER['default'] = "<br />";
+if (!count($EVENT_CAL_PDF_NAMES))  $ec_pdf_template = 'default';
+// If one name only, we just assign that
+if (count($EVENT_CAL_PDF_NAMES) == 1)
+{
+  $ec_pdf_template = array_pop(array_keys($EVENT_CAL_PDF_NAMES));
+//  echo "Assign template: ".$ec_pdf_template."<br />";
+}
+
+$ec_enable_pdf = ($pref['eventpost_printlists'] > 1) && is_readable(e_PLUGIN."pdf/e107pdf.php");
+
+if (!isset($ec_qs[0]) || !isset($ec_qs[1]))
+{
+// Put up a prompt to get the view period
+  require_once(HEADERF);
+	$cal_text = "<div style='text-align:center'>
+	<form method='post' action='".e_SELF."'>
+	<table style='".USER_WIDTH."' class='fborder'>
+	<colgroup>
+	<col width = '60%';vertical-align:top; />
+	<col width = '40%';vertical-align:top; />
+	</colgroup>";
+	$cal_text .= 	"<tr>
+	<td class='forumheader3'>".EC_LAN_153."</td>
+	<td class='forumheader3' style='text_align:center'>";
+	$cal_text .= gen_drop(FALSE)."</td>
+	</tr><tr>
+	<td class='forumheader3'>".EC_LAN_154."</td>
+	<td class='forumheader3' style='text_align:center'>".gen_drop(TRUE)."</td>
+	</tr><tr>
+	<td class='forumheader3'>".EC_LAN_155."</td>
+	<td class='forumheader3' style='text_align:center'>";
+	$cal_text .= $tp->parseTemplate('{EC_NAV_CATEGORIES=nosubmit}',FALSE,$calendar_shortcodes);
+	$cal_text .= "</td>
+	</tr>";
+	if (isset($EVENT_CAL_PDF_NAMES) && is_array($EVENT_CAL_PDF_NAMES) && (count($EVENT_CAL_PDF_NAMES) > 1))
+	{  // Offer choice of templates
+	  $cal_text .= "<tr>
+	  <td class='forumheader3'>".EC_LAN_157."</td>
+	  <td class='forumheader3' style='text_align:center'><select name='template_choice' class='tbox' style='width:140px;' >\n";
+	  foreach($EVENT_CAL_PDF_NAMES as $ec_template_name => $ec_template_choice)
+	  {
+	    $cal_text .= "<option value='{$ec_template_name}'>{$ec_template_choice}</option>\n";
+	  }
+	  $cal_text .= "</select></td>
+	  </tr>\n";
+	}
+	// Radio buttons to select output type
+	$cal_text .= "<tr>
+	<td class='forumheader3'>".EC_LAN_158."</td>
+	<td class='forumheader3' style='text_align:center'>";
+	$cal_text .= "
+	<input type='radio' name='output_type' value='display' checked='checked' /> ".EC_LAN_159."<br />
+	<input type='radio' name='output_type' value='print' /> ".EC_LAN_160."<br />";
+	if ($ec_enable_pdf)
+	{
+	  $cal_text .= "<input type='radio' name='output_type' value='pdf' /> ".EC_LAN_161;
+	}
+	$cal_text .="</td></tr>";
+	
+	$cal_text .= "<tr><td colspan='2'  style='text-align:center' class='fcaption'><input class='button' type='submit' name='set_dates' value='".EC_LAN_156."' /></td></tr>";
+
+	$cal_text .= "</table></form></div>";
+  $ns->tablerender(EC_LAN_150, $cal_text);
+  require_once(FOOTERF);
+  exit;
+}
+
+
+if (!is_numeric($ec_start_date = decode_date($ec_qs[0],FALSE)))
+{
+  $message = $ec_start_date;
+}
+elseif (!is_numeric($ec_end_date = decode_date($ec_qs[1],TRUE)))
+{
+  $message = $ec_end_date;
+}
+elseif ($ec_start_date >= $ec_end_date)
+{
+  $message = EC_LAN_151;
+}
+elseif (($ec_end_date - $ec_start_date) > 366*86400)
+{
+  $message = EC_LAN_152;
+}
+
+// That's the vetting of the query done (as much as we'll do)
+if ($message !== "")
+{
+  require_once(HEADERF);
+  $ns->tablerender(EC_LAN_80, $message);
+  require_once(FOOTERF);
+  exit;
+}
+
+
+global $ec_current_month, $thisevent_start_date, $thisevent_end_date, $ec_output_type, $ec_category_list, $ec_list_title;
+$ec_output_type = $ec_qs[4];
+if (isset($ec_qs[5])) $ec_list_title = $ec_qs[5]; else $ec_list_title = EC_LAN_163;
+$ec_list_title = str_replace('_',' ',$ec_list_title);
+
+if (($ec_output_type == 'pdf') && !$ec_enable_pdf) $ec_output_type = 'display';
+if ($ec_output_type == 'display') require_once(HEADERF);
+
+
+// Allow a number of categories separated by a '&'
+$cat_filter = 0;
+$ec_category_list = EC_LAN_97;				// Displayable version of categories - default to 'all'
+if (isset($ec_qs[2]) && ($ec_qs[2] != '*'))
+{
+  $ec_category_list = array();
+  $temp = explode('&',$ec_qs[2]);
+  foreach($temp as $t1)
+  {
+    if (!is_numeric($t1)) unset($t1);
+  }
+  
+  // Now look up the category names in the database - check access rights at the same time
+  $temp = array();   // Accumulate valid category IDs
+  $cal_qry = "SELECT event_cat_id, event_cat_name FROM #event_cat WHERE find_in_set(event_cat_id, '{$ec_qs[2]}') ".$ecal_class->extra_query;
+  if ($sql->db_Select_gen($cal_qry))
+  {
+    while ($thiscat = $sql->db_Fetch())
+	{
+	  $temp [] = $thiscat['event_cat_id'];
+	  $ec_category_list[] = $thiscat['event_cat_name'];
+	}
+	$cat_filter = implode(',',$temp);	// Gives us a comma separated numeric set of categories
+  }
+  else
+  {
+    echo EC_LAN_100."<br /><br />";
+	exit;
+  }
+}
+
+// $ec_start_date - earliest date of period
+// $ec_end_date - latest date of period
+
+// We'll potentially need virtually all of the event-related fields, so get them regardless. Just cut back on category fields
+$ev_list = $ecal_class->get_events($ec_start_date, $ec_end_date, FALSE, $cat_filter, TRUE, '*', 'event_cat_name,event_cat_icon');
+// Now go through and multiply up any recurring records
+  $tim_arr = array();
+  foreach ($ev_list as $k=>$event)
+  {
+    if (is_array($event['event_start']))
+	{
+	  foreach ($event['event_start'] as $t)
+	  {
+	    $tim_arr[$t] = $k;
+	  }
+	}
+	else
+	{
+	  $tim_arr[$event['event_start']] = $k;
+	}
+  }
+  
+  ksort($tim_arr);  // Sort into time order
+
+
+
+if (isset($ec_qs[3])) $ec_pdf_template = $ec_qs[3];
+if (!isset($ec_pdf_template) || !array_key_exists($ec_pdf_template,$EVENT_CAL_PDF_NAMES)) $ec_pdf_template = 'default';
+
+
+// These available to templates/shortcodes to pick up change of start day/month/year
+global $ec_last_year, $ec_last_month, $ec_last_day, $ec_year_change, $ec_month_change, $ec_day_change;
+global $ec_start_date, $ec_end_date, $ec_pdf_options;
+$ec_last_year = 0;
+$ec_last_month = 0;
+$ec_last_day = 0;
+$ec_pdf_options = "";     // Can configure the PDF driver
+
+$cal_text = "";
+$cal_totev = count($ev_list);
+if ($cal_totev > 0)
+{
+  if (isset($ec_template_styles[$ec_pdf_template]) && is_array($ec_template_styles[$ec_pdf_template]))
+  {
+    $ec_current_overrides = $ec_template_styles[$ec_pdf_template];    // Possible array of codes to override standard $sc_style
+    $sc_style = array_merge($sc_style,$ec_current_overrides);			// Override as necessary
+  }
+
+// If printing, wrap in a form so the button works 
+  if ($ec_output_type == 'print') $cal_text .= "<form action=''>\n";
+// Add header
+  $cal_text .= $tp->parseTemplate($EVENT_CAL_PDF_HEADER[$ec_pdf_template],TRUE,$calendar_shortcodes);
+// Debug code
+//  echo "Start date: ".strftime("%d-%m-%Y %H:%M:%S",$ec_start_date)."<br />";
+//  echo "End date:   ".strftime("%d-%m-%Y %H:%M:%S",$ec_end_date)."<br />";
+//  echo "Template:   ".$ec_pdf_template,"<br />";
+//  echo "Header:     ".$EVENT_CAL_PDF_HEADER[$ec_pdf_template]."<br />";
+//  echo "Body:       ".$EVENT_CAL_PDF_BODY[$ec_pdf_template]."<br />";
+//  echo "Footer:     ".$EVENT_CAL_PDF_FOOTER[$ec_pdf_template]."<br />";
+  
+  foreach ($tim_arr as $tim => $ptr)
+  {
+	$ev_list[$ptr]['event_start'] = $tim;
+	$thisevent = $ev_list[$ptr];
+//    echo "Event: ".$thisevent['event_start']." ".$thisevent['event_title']."<br />";
+	// Decode dates into individual fields - we're bound to want them
+	$thisevent_start_date = $ecal_class->gmgetdate($thisevent['event_start']);
+	$thisevent_end_date   = $ecal_class->gmgetdate($thisevent['event_end']);
+
+	$ec_year_change = ($ec_last_year != $thisevent_start_date['year']);
+	$ec_month_change = ($ec_last_month != $thisevent_start_date['mon']);
+	$ec_day_change   = ($ec_last_day != $thisevent_start_date['mday']);
+
+	$cal_totev --;    // Can use this to modify inter-event gap
+	$cal_text .= $tp->parseTemplate($EVENT_CAL_PDF_BODY[$ec_pdf_template],FALSE,$calendar_shortcodes);
+	  
+	$ec_last_year = $thisevent_start_date['year'];
+	$ec_last_month = $thisevent_start_date['mon'];
+	$ec_last_day = $thisevent_start_date['mday'];
+  }
+
+// Add footer
+  $cal_text .= $tp->parseTemplate($EVENT_CAL_PDF_FOOTER[$ec_pdf_template],FALSE,$calendar_shortcodes);
+  if ($ec_output_type == 'print') $cal_text .= "</form>\n";
+}
+else
+{
+  $cal_text.= EC_LAN_148;
+}
+
+
+switch ($ec_output_type)
+{
+  case 'display':
+   $ns->tablerender(EC_LAN_80, $cal_text, 'ec_pf_page');
+   require_once(FOOTERF);
+   break;
+  case 'print' :
+    echo $cal_text;
+	break;
+  case 'pdf' :
+	$lan_file = e_PLUGIN."pdf/languages/".e_LANGUAGE.".php";
+	include_once(file_exists($lan_file) ? $lan_file : e_PLUGIN."pdf/languages/English.php");
+	define('FPDF_FONTPATH', 'font/');
+	require_once(e_PLUGIN."pdf/ufpdf.php");		//require the ufpdf class
+	require_once(e_PLUGIN."pdf/e107pdf.php");	//require the e107pdf class
+	if ($ec_pdf_options == "")
+	  $pdf = new e107PDF();
+	else
+	  $pdf = new e107PDF($ec_pdf_options);
+//	$text = array($text, $creator, $author, $title, $subject, $keywords, $url);
+	$text = array($cal_text,'', '', EC_LAN_163,'','',e_SELF.e_QUERY);
+	$pdf->makePDF($text);
+	break;
+}
+
+
+function decode_date($date_string,$last_day = FALSE)
+{  // Decode a date string
+  if (strpos($date_string,'now') === 0)
+  {  // decode special dates
+    $today = getdate();
+    $date_string = trim(substr($date_string,3));   // Knock off the 'now'
+	if (($date_string != '') && ($date_string[0] == '+'))
+	{
+	  $date_string = trim(substr($date_string,1));	// Knock off the '+'
+	  if (is_numeric($date_string) && ($date_string >= 0) && ($date_string <= 12))
+	  {
+	    $today['mon'] += $date_string;
+		if ($today['mon'] > 12)
+		{
+		  $today['mon'] -= 12;
+		  $today['year'] += 1;
+		}
+	  }
+	  else
+	  {
+	    return EC_LAN_149;
+	  }
+	}
+	$date_string = $today['year'].$today['mon'];
+  }
+  if (ctype_digit($date_string))
+  {
+    $month = 0;
+	$day = 1;
+	if (strlen($date_string) == 5) $date_string = substr_replace($date_string,'0',-1,0);
+    if (strlen($date_string) == 8)
+    {
+      $day = substr($date_string,-2,2);
+	  if ($last_day) $day += 1;
+    }
+    elseif (strlen($date_string) == 6)
+    {
+	  if ($last_day) $month = 1;
+    }
+    else
+    {      // Error
+	  return EC_LAN_149;
+    }
+	$month += substr($date_string,4,2);
+	$year  = substr($date_string,0,4);
+	$temp  = mktime(0,0,0,$month,$day,$year);
+	if ($last_day) $temp -= 1;			// Always do this to get whole of last day
+	return $temp;
+  }
+  else
+  {    // Error
+    return EC_LAN_149;
+  }
+}
+
+
+// Generate monthly drop-down - FALSE = first, TRUE = last
+// For the first date we want beginning of previous year to end of current year
+// For the last date we want end of next 
+function gen_drop($drop_type)
+{
+	global $ecal_class;
+	
+	$text = "<select name='".($drop_type ? 'end_date' : 'start_date')."' class='tbox' style='width:140px;' >\n";
+	if ($drop_type)
+	{
+		$start_date = strtotime("-3 months");
+		$match_date = strtotime("+3 months");	// Propose 3-month list
+	}
+	else
+	{
+		$start_date = strtotime("-9 months");
+	//	$match_date = strtotime("-1 months");
+		$match_date = time();    // Use current month for start date
+	}
+
+	// Get date to be 1st of month
+	$date = $ecal_class->gmgetdate($match_date);
+	$match_date = gmmktime(0,0,0,$date['mon'],1,$date['year'],FALSE);
+	
+	for ($i = 0; $i < 24; $i++)
+	{ 
+		$sel_text = (($match_date == $start_date) ? "selected='selected'" : "");
+		$date = $ecal_class->gmgetdate($start_date);
+		$text .= "<option value = '{$date['year']}{$date['mon']}' {$sel_text}>{$date['month']} {$date['year']} </option>\n";
+		$start_date = gmmktime(0,0,0,$date['mon']+1,1,$date['year'],FALSE);
+	}
+	$text .= "</select>\n";
+	return $text;
+}
+?>
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/ec_pf_template.php 1.0.4.src/e107_plugins/calendar_menu/ec_pf_template.php
--- 1.0.2.src/e107_plugins/calendar_menu/ec_pf_template.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.0.4.src/e107_plugins/calendar_menu/ec_pf_template.php	2013-09-26 16:49:50.000000000 -0500
@@ -0,0 +1,99 @@
+<?php
+/*
+ * e107 website system
+ *
+ * Copyright (C) 2002-2013 e107 Inc (e107.org)
+ * Released under the terms and conditions of the
+ * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
+ *
+ * Event calendar - templates for listings option
+ *
+ * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/usersettings.php $
+ * $Id: usersettings.php 11645 2010-08-01 12:57:11Z e107coders $
+ */
+ 
+/**
+  Templates file for the event calendar listings (display/print/pdf).
+  There can be more than one template defined, in which case they are selectable.
+  There are four strings to define:
+$EVENT_CAL_PDF_NAMES[] - a 'user-friendly' name/description (shown in selection box)
+$EVENT_CAL_PDF_HEADER[] - the template for the header - displayed once at the top pf the list
+$EVENT_CAL_PDF_BODY[]	- template for each individual entry
+$EVENT_CAL_PDF_FOOTER[]	- template for a footer (to close off the list)
+
+The array index defines the name of the template - if there is an entry in the $EVENT_CAL_PDF_NAMES[]
+array, there must be a corresponding entry in each of the other three arrays.
+
+There are two ways of managing the styling of the various shortcodes:
+	a) The $sc_style array works in the usual way, and should be used where the styling is the same 
+	for all templates, or where you can set a 'default' styling which applies to most uses of the shortcode
+	b) An $ec_template_styles array sets styles for an individual template. This need only contain the
+	styles which override a default $sc_style entry.
+  
+*/
+
+if (!defined('e107_INIT')) { exit; }
+if (!defined("USER_WIDTH")){ define("USER_WIDTH","width:auto"); }
+
+$sc_style['EC_PR_CHANGE_YEAR']['pre'] = '<br /><em><strong>';
+$sc_style['EC_PR_CHANGE_YEAR']['post'] = '</strong></em>';
+$sc_style['EC_PR_CHANGE_MONTH']['pre'] = '<br /><strong>';
+$sc_style['EC_PR_CHANGE_MONTH']['post'] = '</strong><br />';
+$sc_style['EC_PRINT_BUTTON']['pre'] = "<br /><div style='text-align:center'>";
+$sc_style['EC_PRINT_BUTTON']['post'] = "</div>";
+$sc_style['EC_NOW_DATE']['pre'] = EC_LAN_170;
+$sc_style['EC_NOW_DATE']['post'] = "";
+$sc_style['EC_NOW_TIME']['pre'] = EC_LAN_144;
+$sc_style['EC_NOW_TIME']['post'] = "";
+$sc_style['EC_PR_CAT_LIST']['pre'] = EC_LAN_172;
+$sc_style['EC_PR_CAT_LIST']['post'] = "";
+$sc_style['EC_PR_LIST_TITLE']['pre'] = "<h3>";
+$sc_style['EC_PR_LIST_TITLE']['post'] = "</h3>";
+
+// - Default style - very basic
+$EVENT_CAL_PDF_NAMES['default'] = EC_LAN_165;
+$EVENT_CAL_PDF_HEADER['default'] = "{EC_PR_LIST_TITLE}<br />{EC_PR_CAT_LIST}<br />".EC_LAN_168."{EC_PR_LIST_START=%d-%m-%Y}<br />".EC_LAN_169."{EC_PR_LIST_END=%d-%m-%Y}<br />";
+$EVENT_CAL_PDF_BODY['default'] = "{EC_PR_CHANGE_YEAR}{EC_PR_CHANGE_MONTH}{EC_MAIL_SHORT_DATE} {EC_MAIL_TIME_START}  {EC_MAIL_TITLE}<br />\n";
+$EVENT_CAL_PDF_FOOTER['default'] = EC_LAN_138."<br />{EC_IFNOT_DISPLAY=EC_NOW_DATE}{EC_IFNOT_DISPLAY=EC_NOW_TIME}<br />{EC_PRINT_BUTTON}";
+
+
+// - A simple tabular style
+$ec_template_styles['simple']['EC_PR_CHANGE_YEAR']['pre'] = "<tr><td colspan='4'><em><strong><br />";
+$ec_template_styles['simple']['EC_PR_CHANGE_YEAR']['post'] = '</strong></em></td></tr>';
+$ec_template_styles['simple']['EC_PR_CHANGE_MONTH']['pre'] = '<strong>';
+$ec_template_styles['simple']['EC_PR_CHANGE_MONTH']['post'] = '</strong>';
+
+$EVENT_CAL_PDF_NAMES['simple'] = EC_LAN_166;
+$EVENT_CAL_PDF_HEADER['simple'] = "{EC_IF_PRINT=LOGO}<table border='0px' cellspacing='10px' cellpadding='5px'>
+     <colgroup> <col width='15%'><col width='10%'><col width='10%'><col width='65%'></colgroup>
+	 <tr ><td colspan='4' style='text-align:center'>".EC_LAN_163."<br />".EC_LAN_168."{EC_PR_LIST_START=%d-%m-%Y}<br />".EC_LAN_169."{EC_PR_LIST_END=%d-%m-%Y}</td></tr>";
+$EVENT_CAL_PDF_BODY['simple'] = "{EC_PR_CHANGE_YEAR}<tr><td>{EC_PR_CHANGE_MONTH}&nbsp;</td>
+     <td>{EC_MAIL_DATE_START=%a %d}</td><td>{EC_MAIL_TIME_START}</td><td>{EC_MAIL_TITLE}</td></tr>\n";
+$EVENT_CAL_PDF_FOOTER['simple'] = "</table><br /><br />{EC_IFNOT_DISPLAY=EC_NOW_DATE}{EC_IFNOT_DISPLAY=EC_NOW_TIME} <br />{EC_PRINT_BUTTON}";
+
+
+// - A tabular style with lines round the cells
+$ec_template_styles['tlinclines']['EC_PR_CHANGE_YEAR']['pre'] = "<tr><td colspan='3'><em><strong><br />";
+$ec_template_styles['tlinclines']['EC_PR_CHANGE_YEAR']['post'] = '</strong></em></td></tr>';
+
+$EVENT_CAL_PDF_NAMES['tlinclines'] = EC_LAN_167;
+$EVENT_CAL_PDF_HEADER['tlinclines'] = "<table border='1px' cellspacing='0px' cellpadding='5px'>
+     <colgroup> <col width='22%'><col width='8%'><col width='70%'></colgroup>
+	 <tr ><td colspan='4' style='text-align:center'>".EC_LAN_163."<br />".EC_LAN_168."{EC_PR_LIST_START=%d-%m-%Y}<br />".EC_LAN_169."{EC_PR_LIST_END=%d-%m-%Y}<br /></td></tr>";
+$EVENT_CAL_PDF_BODY['tlinclines'] = "{EC_PR_CHANGE_YEAR}<tr>
+     <td>{EC_MAIL_DATE_START}</td><td>{EC_MAIL_TIME_START}</td><td>{EC_MAIL_TITLE}</td></tr>\n";
+$EVENT_CAL_PDF_FOOTER['tlinclines'] = "</table><br /><br />{EC_IFNOT_DISPLAY=EC_NOW_DATE=%d-%m-%y}{EC_IFNOT_DISPLAY=EC_NOW_TIME}{EC_PRINT_BUTTON}";
+
+// - A tabular style with lines round the cells and categories
+$ec_template_styles['tlinccatlines']['EC_PR_CHANGE_YEAR']['pre'] = "<tr><td colspan='4'><em><strong><br />";
+$ec_template_styles['tlinccatlines']['EC_PR_CHANGE_YEAR']['post'] = '</strong></em></td></tr>';
+
+$EVENT_CAL_PDF_NAMES['tlinccatlines'] = EC_LAN_171;
+$EVENT_CAL_PDF_HEADER['tlinccatlines'] = "<table border='1px' cellspacing='0px' cellpadding='5px'>
+     <colgroup> <col width='12%'><col width='8%'><col width='18%'><col width='62%'></colgroup>
+	 <tr ><td colspan='4' style='text-align:center'>".EC_LAN_163."<br />".EC_LAN_168."{EC_PR_LIST_START=%d-%m-%Y}<br />".EC_LAN_169."{EC_PR_LIST_END=%d-%m-%Y}<br /></td></tr>";
+$EVENT_CAL_PDF_BODY['tlinccatlines'] = "{EC_PR_CHANGE_YEAR}<tr>
+     <td>{EC_MAIL_DATE_START=%D %d %b}</td><td>{EC_MAIL_TIME_START}</td><td>{EC_MAIL_CATEGORY}</td><td>{EC_MAIL_TITLE}</td></tr>\n";
+$EVENT_CAL_PDF_FOOTER['tlinccatlines'] = "</table><br /><br />{EC_IFNOT_DISPLAY=EC_NOW_DATE=%d-%m-%y}{EC_IFNOT_DISPLAY=EC_NOW_TIME}{EC_PRINT_BUTTON}";
+
+?>
\ No newline at end of file
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/e_list.php 1.0.4.src/e107_plugins/calendar_menu/e_list.php
--- 1.0.2.src/e107_plugins/calendar_menu/e_list.php	2013-10-11 14:02:27.334000028 -0500
+++ 1.0.4.src/e107_plugins/calendar_menu/e_list.php	2013-09-26 16:49:50.000000000 -0500
@@ -1,59 +1,81 @@
-<?php
-
-if (!defined('e107_INIT')) { exit; }
-
-
-
-require_once('ecal_class.php');
-$ecal_class = new ecal_class;
-
-$LIST_CAPTION = $arr[0];
-$LIST_DISPLAYSTYLE = ($arr[2] ? "" : "none");
-
-$current_day	= $ecal_class->cal_date['mday'];
-$current_month	= $ecal_class->cal_date['mon'];
-$current_year	= $ecal_class->cal_date['year'];
-
-	$current		= mktime(0,0,0,$current_month, $current_day, $current_year);
-
-	if($mode == "new_page" || $mode == "new_menu" ){
-		$lvisit = $this -> getlvisit();
-		$qry = " event_datestamp>".intval($lvisit)." AND ";
-	}else{
-		$qry = "";
-	}
-
-	$bullet = $this -> getBullet($arr[6], $mode);
-
-	$qry = "
-	SELECT e.*, c.event_cat_name
-	FROM #event AS e 
-	LEFT JOIN #event_cat AS c ON c.event_cat_id = e.event_category 
-	WHERE ".$qry." e.event_start>='$current' AND c.event_cat_class REGEXP '".e_CLASS_REGEXP."' 
-	ORDER BY e.event_start ASC LIMIT 0,".intval($arr[7]);
-
-	if(!$event_items = $sql->db_Select_gen($qry)){
-		$LIST_DATA = LIST_CALENDAR_2;
-	}else{
-		while($row = $sql -> db_Fetch()){
-
-			$tmp = explode(".", $row['event_author']);
-			if($tmp[0] == "0"){
-				$AUTHOR = $tmp[1];
-			}elseif(is_numeric($tmp[0]) && $tmp[0] != "0"){
-				$AUTHOR = (USER ? "<a href='".e_BASE."user.php?id.".$tmp[0]."'>".$tmp[1]."</a>" : $tmp[1]);
-			}else{
-				$AUTHOR = "";
-			}
-
-			$rowheading	= $this -> parse_heading($row['event_title'], $mode);
-			$ICON		= $bullet;
-			$HEADING	= "<a href='".e_PLUGIN."calendar_menu/event.php?".$row['event_start'].".event.".$row['event_id']."' title='".$row['event_title']."'>".$rowheading."</a>";
-			$CATEGORY	= $row['event_cat_name'];
-			$DATE		= ($arr[5] ? ($row['event_start'] ? $this -> getListDate($row['event_start'], $mode) : "") : "");
-			$INFO		= "";
-			$LIST_DATA[$mode][] = array( $ICON, $HEADING, $AUTHOR, $CATEGORY, $DATE, $INFO );
-		}
-	}
-
+<?php
+/*
+ * e107 website system
+ *
+ * Copyright (C) 2002-2012 e107 Inc (e107.org)
+ * Released under the terms and conditions of the
+ * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
+ *
+ * Event calendar - for 'list new' plugin
+ *
+ * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/e_list.php $
+ * $Id: e_list.php 13009 2012-10-27 15:19:55Z e107steved $
+ */
+
+if (!defined('e107_INIT')) { exit; }
+
+if (isset($pref['plug_installed'])) 
+{
+  if (!isset($pref['plug_installed']['calendar_menu'])) return;
+}
+else
+{  // Support 'legacy' method as well for now
+  if(!$calendar_install = $sql -> db_Select("plugin", "*", "plugin_path = 'calendar_menu' AND plugin_installflag = '1' "))
+  {
+	return;
+  }
+}
+
+	$LIST_CAPTION = $arr[0];
+	$LIST_DISPLAYSTYLE = ($arr[2] ? "" : "none");
+
+require_once('ecal_class.php');
+$ecal_class = new ecal_class;
+
+$current_day	= $ecal_class->cal_date['mday'];
+$current_month	= $ecal_class->cal_date['mon'];
+$current_year	= $ecal_class->cal_date['year'];
+
+	$current		= mktime(0,0,0,$current_month, $current_day, $current_year);
+
+	if($mode == "new_page" || $mode == "new_menu" ){
+		$lvisit = $this -> getlvisit();
+		$qry = " event_datestamp>".intval($lvisit)." AND ";
+	}else{
+		$qry = "";
+	}
+
+	$bullet = $this -> getBullet($arr[6], $mode);
+
+	$qry = "
+	SELECT e.*, c.event_cat_name
+	FROM #event AS e 
+	LEFT JOIN #event_cat AS c ON c.event_cat_id = e.event_category 
+	WHERE ".$qry." e.event_start>='$current' AND c.event_cat_class REGEXP '".e_CLASS_REGEXP."' 
+	ORDER BY e.event_start ASC LIMIT 0,".intval($arr[7]);
+
+	if(!$event_items = $sql->db_Select_gen($qry)){
+		$LIST_DATA = LIST_CALENDAR_2;
+	}else{
+		while($row = $sql -> db_Fetch()){
+
+			$tmp = explode(".", $row['event_author']);
+			if($tmp[0] == "0"){
+				$AUTHOR = $tmp[1];
+			}elseif(is_numeric($tmp[0]) && $tmp[0] != "0"){
+				$AUTHOR = (USER ? "<a href='".e_BASE."user.php?id.".$tmp[0]."'>".$tmp[1]."</a>" : $tmp[1]);
+			}else{
+				$AUTHOR = "";
+			}
+
+			$rowheading	= $this -> parse_heading($row['event_title'], $mode);
+			$ICON		= $bullet;
+			$HEADING	= "<a href='".e_PLUGIN."calendar_menu/event.php?".$row['event_start'].".event.".$row['event_id']."' title='".$row['event_title']."'>".$rowheading."</a>";
+			$CATEGORY	= $row['event_cat_name'];
+			$DATE		= ($arr[5] ? ($row['event_start'] ? $this -> getListDate($row['event_start'], $mode) : "") : "");
+			$INFO		= "";
+			$LIST_DATA[$mode][] = array( $ICON, $HEADING, $AUTHOR, $CATEGORY, $DATE, $INFO );
+		}
+	}
+
 ?>
\ No newline at end of file
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/e_notify.php 1.0.4.src/e107_plugins/calendar_menu/e_notify.php
--- 1.0.2.src/e107_plugins/calendar_menu/e_notify.php	2013-10-11 14:02:27.334000028 -0500
+++ 1.0.4.src/e107_plugins/calendar_menu/e_notify.php	2013-09-26 16:49:50.000000000 -0500
@@ -2,14 +2,14 @@
 /*
  * e107 website system
  *
- * Copyright (C) 2002-2010 e107 Inc (e107.org)
+ * Copyright (C) 2002-2012 e107 Inc (e107.org)
  * Released under the terms and conditions of the
  * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
  *
  * Event calendar - notify
  *
  * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/e_notify.php $
- * $Id: e_notify.php 12440 2011-12-05 18:03:34Z e107steved $
+ * $Id: e_notify.php 13009 2012-10-27 15:19:55Z e107steved $
  */
 
 if (!defined('e107_INIT')) { exit; }
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/e_rss.php 1.0.4.src/e107_plugins/calendar_menu/e_rss.php
--- 1.0.2.src/e107_plugins/calendar_menu/e_rss.php	2013-10-11 14:02:27.335000028 -0500
+++ 1.0.4.src/e107_plugins/calendar_menu/e_rss.php	2013-09-26 16:49:50.000000000 -0500
@@ -2,14 +2,14 @@
 /*
  * e107 website system
  *
- * Copyright (C) 2002-2010 e107 Inc (e107.org)
+ * Copyright (C) 2002-2012 e107 Inc (e107.org)
  * Released under the terms and conditions of the
  * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
  *
  * Event calendar - RSS feed
  *
  * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/e_rss.php $
- * $Id: e_rss.php 12440 2011-12-05 18:03:34Z e107steved $
+ * $Id: e_rss.php 13009 2012-10-27 15:19:55Z e107steved $
  */
 
 if (!defined('e107_INIT')) { exit; }
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/e_search.php 1.0.4.src/e107_plugins/calendar_menu/e_search.php
--- 1.0.2.src/e107_plugins/calendar_menu/e_search.php	2013-10-11 14:02:27.335000028 -0500
+++ 1.0.4.src/e107_plugins/calendar_menu/e_search.php	2013-09-26 16:49:50.000000000 -0500
@@ -2,14 +2,14 @@
 /*
  * e107 website system
  *
- * Copyright (C) 2002-2010 e107 Inc (e107.org)
+ * Copyright (C) 2002-2012 e107 Inc (e107.org)
  * Released under the terms and conditions of the
  * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
  *
  * Event calendar - search shim
  *
  * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/e_search.php $
- * $Id: e_search.php 12577 2012-01-28 21:07:05Z e107steved $
+ * $Id: e_search.php 13009 2012-10-27 15:19:55Z e107steved $
  */
 if (!defined('e107_INIT')) { exit(); }
 
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/event.php 1.0.4.src/e107_plugins/calendar_menu/event.php
--- 1.0.2.src/e107_plugins/calendar_menu/event.php	2013-10-11 14:02:27.336000028 -0500
+++ 1.0.4.src/e107_plugins/calendar_menu/event.php	2013-09-26 16:49:50.000000000 -0500
@@ -1,835 +1,890 @@
-<?php
-/*
-+ ----------------------------------------------------------------------------+
-|     e107 website system
-|
-|     Copyright (C) 2001-2002 Steve Dunstan (jalist@e107.org)
-|     Copyright (C) 2008-2010 e107 Inc (e107.org)
-|     jali.@e107.org
-|
-|     Released under the terms and conditions of the
-|     GNU General Public License (http://gnu.org).
-|
-|     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/event.php $
-|     $Revision: 11678 $
-|     $Id: event.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
-|
-| 09.11.06 - Started next batch of mods
-+----------------------------------------------------------------------------+
-*/
-require_once("../../class2.php");
-require_once(e_PLUGIN."calendar_menu/calendar_shortcodes.php");
-
-if (isset($_POST['viewallevents']))
-{  // Triggered from NAV_BUT_ALLEVENTS
-    header("Location: ".e_PLUGIN."calendar_menu/calendar.php?".$_POST['enter_new_val']);
-	exit;
-}
-
-if (isset($_POST['doit']))
-{  // Triggered from NAV_BUT_ENTEREVENT
-    header("Location: ".e_PLUGIN."calendar_menu/event.php?ne.".$_POST['enter_new_val']);
-	exit;
-}
-
-if (isset($_POST['subs']))
-{
-    header("Location: ".e_PLUGIN."calendar_menu/subscribe.php");
-	exit;
-}
-
-include_lan(e_PLUGIN."calendar_menu/languages/".e_LANGUAGE.".php");
-define("PAGE_NAME", EC_LAN_80);
-
-require_once(e_PLUGIN.'calendar_menu/ecal_class.php');
-global $ecal_class;
-$ecal_class = new ecal_class;
-$cal_super = $ecal_class->cal_super;
-
-require_once(e_HANDLER."calendar/calendar_class.php");
-$cal = new DHTML_Calendar(true);
-
-$category_filter = "";
-if  ((isset($_POST['event_cat_ids']) && $_POST['event_cat_ids'] != "all"))
-{
-  $category_filter = " AND (e.event_category = '".intval($_POST['event_cat_ids'])."') ";
-}
-
-
-
-// Event to add or update
-if ((isset($_POST['ne_insert']) || isset($_POST['ne_update'])) && ($cal_super || check_class($pref['eventpost_admin'])))
-{  
-	if (($_POST['ne_event'] == '') || !isset($_POST['qs']))
-	{	// Problem - tell user to go away
-		header('location:event.php?'.$ev_start.'.0.m8');
-		exit;
-	}
-	else
-	{
-		if (!$cal_super)
-		{
-			$evCat = intval($_POST['ne_category']);
-			if ($sql->db_Select('event_cat', 'event_cat_addclass', 'event_cat_id = '.$evCat))
-			{
-				$row = $sql->db_Fetch(MYSQL_ASSOC);
-				if (!check_class($row['event_cat_addclass']))
-				{
-					header('location:event.php?'.$ev_start.'.0.m8');
-					exit;
-				}
-			}
-			else
-			{		// Invalid category - definitely go away!
-				header('location:'.e_BASE.'index.php');
-				exit;
-			}
-		}
-		$ev_start		= $ecal_class->make_date($_POST['ne_hour'], $_POST['ne_minute'],$_POST['start_date']);
-		$ev_end			= $ecal_class->make_date($_POST['end_hour'], $_POST['end_minute'],$_POST['end_date']);
-		$ev_title		= $tp->toDB($_POST['ne_title']);
-		$ev_location	= $tp->toDB($_POST['ne_location']);
-		$ev_event		= $tp->toDB($_POST['ne_event']);
-		$temp_date 		= getdate($ecal_class->make_date(0,0,$_POST['start_date']));
-		if ($_POST['recurring'] == 1)
-		{
-		  $rec_m = $temp_date['mday'];		// Day of month
-		  $rec_y = $temp_date['mon'];			// Month number
-		}
-		else
-		{
-		  $rec_m = "";
-		  $rec_y = "";
-		}
-		
-		$report_msg = '.m3';
-		if (isset($_POST['ne_insert']))
-		{  // Bits specific to inserting a new event
-			$qry = " 0, '".intval($ev_start)."', '".intval($ev_end)."', '".intval($_POST['allday'])."', '".intval($_POST['recurring'])."', '".time()."', '$ev_title', '$ev_location', '$ev_event', '".USERID.".".USERNAME."', '".$tp -> toDB($_POST['ne_email'])."', '".intval($_POST['ne_category'])."', '".$tp -> toDB($_POST['ne_thread'])."', '".intval($rec_m)."', '".intval($rec_y)."' ";
-			$sql->db_Insert("event", $qry);
-			$ecal_class->cal_log(1,'db_Insert',$qry, $ev_start);
-			$qs = preg_replace("/ne./i", "", $_POST['qs']);	
-			$report_msg = '.m4';
-		}
-		
-		if (isset($_POST['ne_update']))
-		{  // Bits specific to updating an existing event
-			$qry = "event_start='".intval($ev_start)."', event_end='".intval($ev_end)."', event_allday='".intval($_POST['allday'])."', event_recurring='".intval($_POST['recurring'])."', event_datestamp= '".time()."', event_title= '$ev_title', event_location='$ev_location', event_details='$ev_event', event_contact='".$tp -> toDB($_POST['ne_email'])."', event_category='".intval($_POST['ne_category'])."', event_thread='".$tp -> toDB($_POST['ne_thread'])."', event_rec_m='".intval($rec_m)."', event_rec_y='".intval($rec_y)."' WHERE event_id='".intval($_POST['id'])."' ";
-			$sql->db_Update("event", $qry);
-			$ecal_class->cal_log(2,'db_Update',$qry, $ev_start);
-			$qs = preg_replace("/ed./i", "", $_POST['qs']);
-			$report_msg = '.m5';
-		}
-		// Now clear cache  - just do the lot for now - get clever later
-		$e107cache->clear('nq_event_cal');
-		header("location:event.php?".$ev_start.".".$qs.$report_msg);
-		exit;
-	}
-}
-
-$action = "";		// Remove notice
-
-require_once(HEADERF);
-
-if (isset($_POST['jump']))
-{
-  $smarray	= getdate(mktime(0, 0, 0, $_POST['jumpmonth'], 1, $_POST['jumpyear']));
-  $month	= $smarray['mon'];
-  $year		= $smarray['year'];
-}
-else
-{
-    if(e_QUERY)
-	{
-		$qs			= explode(".", e_QUERY);
-		$action		= $qs[0];			// Often a date if just viewing
-		$ds			= (isset($qs[1]) ? $qs[1] : "");
-		$eveid		= (isset($qs[2]) ? $qs[2] : "");
-	}
-	
-    if ($action == "")
-    {
-        $month		= $ecal_class->cal_date['mon'];
-        $year		= $ecal_class->cal_date['year'];
-    }
-    else
-    {
-        $smarray	= getdate($action);
-		$day 		= $smarray['mday'];
-        $month		= $smarray['mon'];
-        $year		= $smarray['year'];
-    }
-}
-
-
-if (isset($_POST['confirm']))
-{
-	$qry = "event_id='".intval($_POST['existing'])."' ";
-    if ($sql->db_Delete("event", $qry))
-    {
-        $message = EC_LAN_51; //Event Deleted
-		$ecal_class->cal_log(3,'db_Delete',$qry,$ev_start);
-    }
-    else
-    {
-        $message = EC_LAN_109; //Unable to Delete event for some mysterious reason
-    }
-}
-
-
-if ($action == "de")
-{  // Delete event - show confirmation form
-    $text = "<div style='text-align:center'>
-	<b>".EC_LAN_48."</b>
-	<br /><br />
-	<form method='post' action='".e_SELF."' id='calformz' >
-	<input class='button' type='submit' name='cancel' value='".EC_LAN_49."' />
-	<input class='button' type='submit' name='confirm' value='".EC_LAN_50."' />
-	<input type='hidden' name='existing' value='".$qs[1]."' />
-	<input type='hidden' name='subbed' value='no' />
-	</form>
-	</div>";
-    $ns->tablerender(EC_LAN_46, $text); // Confirm Delete Event
-    require_once(FOOTERF);
-    exit;
-}
-
-
-
-if (isset($_POST['cancel']))
-{    // Delete Cancelled
-    $message = EC_LAN_47;
-}
-
-
-// set up data arrays ----------------------------------------------------------------------------------
-// (some of these are only used in the shortcodes)
-if ($pref['eventpost_weekstart'] == 'sun')
-{
-    $days	= Array(EC_LAN_25, EC_LAN_19, EC_LAN_20, EC_LAN_21, EC_LAN_22, EC_LAN_23, EC_LAN_24);
-}
-else
-{
-    $days	= Array(EC_LAN_19, EC_LAN_20, EC_LAN_21, EC_LAN_22, EC_LAN_23, EC_LAN_24, EC_LAN_25);
-}
-$dayslo		= 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.');
-$monthabb	= Array(EC_LAN_JAN, EC_LAN_FEB, EC_LAN_MAR, EC_LAN_APR, EC_LAN_MAY, EC_LAN_JUN, EC_LAN_JUL, EC_LAN_AUG, EC_LAN_SEP, EC_LAN_OCT, EC_LAN_NOV, EC_LAN_DEC);
-$months		= array(EC_LAN_0, EC_LAN_1, EC_LAN_2, EC_LAN_3, EC_LAN_4, EC_LAN_5, EC_LAN_6, EC_LAN_7, EC_LAN_8, EC_LAN_9, EC_LAN_10, EC_LAN_11);
-// ----------------------------------------------------------------------------------------------------------
-
-// Messages acknowledging actions
-$poss_message = array('m1' => EC_LAN_41, 'm2' => EC_LAN_42, 'm3' => EC_LAN_43, 'm4' => EC_LAN_44, 'm5' => EC_LAN_45, 'm8' => EC_LAN_181);
-if (isset($qs[2])) if (isset($poss_message[$qs[2]])) $message = $poss_message[$qs[2]];
-
-if (isset($message))
-{
-    $ns->tablerender("", "<div style='text-align:center'><b>".$message."</b></div>");
-}
-
-
-// enter new event form
-if ($action == "ne" || $action == "ed")
-{
-    if ($ecal_class->cal_super || check_class($pref['eventpost_admin']))
-    {
-function make_calendar($boxname, $boxvalue)
-{
-	global $ecal_class, $cal;
-	
-        unset($cal_options);
-        unset($cal_attrib);
-        $cal_options['showsTime'] = false;
-        $cal_options['showOthers'] = true;
-        $cal_options['weekNumbers'] = false;
-        $cal_options['ifFormat'] = $ecal_class->dcal_format_string;
-        $cal_attrib['class'] = "tbox";
-        $cal_attrib['size'] = "12";
-        $cal_attrib['name'] = $boxname;
-        $cal_attrib['value'] = $boxvalue;
-        return $cal->make_input_field($cal_options, $cal_attrib);
-}
-
-
-function make_hourmin($boxname,$cur_hour,$cur_minute)
-{
-  global $pref;
-  if (isset($pref['eventpost_fivemins'])) $incval = 5; else $incval = 1;
-  $retval = " <select name='{$boxname}hour' id='{$boxname}hour' class='tbox'>\n";
-  for($count = "00"; $count <= "23"; $count++)
-  {
-    $val = sprintf("%02d", $count);
-    $retval .= "<option value='{$val}' ".(isset($cur_hour) && $count == $cur_hour ? "selected='selected'" :"")." >".$val."</option>\n";
-  }
-  $retval .= "</select>\n
-		<select name='{$boxname}minute' class='tbox'>\n";
-  for($count = "00"; $count <= "59"; $count+= $incval)
-  {
-    $val = sprintf("%02d", $count);
-    $retval .= "<option ".(isset($cur_minute) && $count == $cur_minute ? "selected='selected'" :"")." value='{$val}'>".$val."</option>\n";
-  }
-  $retval .= "</select>\n";
-  return $retval;
-}
-
-
-        if ($action == "ed")
-        {	// Editing existing event - read from database
-            $sql->db_Select("event", "*", "event_id='".intval($qs[1])."' ");
-            list($null, $ne_start, $ne_end, $allday, $recurring, $ne_datestamp, $ne_title, $ne_location, $ne_event, $ne_author, $ne_email, $ne_category, $ne_thread) = $sql->db_Fetch();
-
-            $smarray = getdate($ne_start);
-            $ne_hour = $smarray['hours'];
-            $ne_minute = $smarray['minutes'];
-            $ne_startdate = $ecal_class->full_date($ne_start);
-
-            $smarray = getdate($ne_end);
-            $end_hour = $smarray['hours'];
-            $end_minute = $smarray['minutes'];
-            $ne_enddate = $ecal_class->full_date($ne_end);
-        }
-        else
-        {	// New event - initialise everything
-            $smarray = getdate($qs[1]);
-            $month = $smarray['mon'];
-            $year = $smarray['year'];
-            $ne_startdate = $ecal_class->full_date($qs[1]);
-
-            $ne_hour = $smarray['hours'];
-            $ne_minute = $smarray['minutes'];
-
-            $end_hour = $smarray['hours'];
-            $end_minute = $smarray['minutes'];
-            $ne_enddate = $ecal_class->full_date($qs[1]);
-        }
-
-		$text = "
-		<script type=\"text/javascript\">
-		<!--
-		function calcheckform(thisform, submitted,arrstr)
-		{
-			var testresults=true;
-
-			//category create check
-			if(submitted == 'ne_cat_create'){
-				if(thisform.ne_new_category.value == ''){
-					alert('".EC_LAN_134."');
-					return FALSE;
-				}else{
-					return TRUE;
-				}
-			}
-
-			function calcdate(thisval)
-			{
-			  var temp1;
-			  temp1 = thisval.split(\"-\");
-			  switch (arrstr)
-			  {
-			    case 2 : return temp1[2]+temp1[1]+temp1[0];
-			    case 3 : return temp1[2]+temp1[0]+temp1[1];
-			    default : return temp1[0]+temp1[1]+temp1[2];
-			  }
-			  return 'Error';
-			}
-			//event check - dates are text strings
-			var sdate = calcdate(thisform.start_date.value);
-			var edate = calcdate(thisform.end_date.value);
-			if (edate < sdate)
-			{  // Update end date if its before start date
-			  thisform.end_date.value = thisform.start_date.value;
-//			  alert('End date changed');
-			}
-			sdate = calcdate(thisform.start_date.value) + thisform.ne_hour.options[thisform.ne_hour.selectedIndex].value + thisform.ne_minute.options[thisform.ne_minute.selectedIndex].value;
-			edate = calcdate(thisform.end_date.value) + thisform.end_hour.options[thisform.end_hour.selectedIndex].value + thisform.end_minute.options[thisform.end_minute.selectedIndex].value;
-//			alert('Format: ' + arrstr + '    Start date: '+ sdate + '    End date: ' + edate);
-			
-			testresults=true;
-
-			if (edate <= sdate && !thisform.allday.checked && testresults )
-			{
-				alert('".EC_LAN_99."');
-				testresults=false;
-			}
-			if ((thisform.ne_title.value=='' || thisform.ne_event.value=='') && testresults)
-			{
-				alert('".EC_LAN_98."');
-				testresults=false;
-			}
-
-			if (testresults)
-			{
-				if (thisform.subbed.value=='no')
-				{
-					thisform.subbed.value='yes';
-					testresults=true;
-				}
-			else
-				{
-					alert('".EC_LAN_113."');
-					return false;
-				}
-			}
-			return testresults;
-		}
-		-->
-		</script>";
-
-		$text .= "
-		<form method='post' action='".e_SELF."' id='linkform' onsubmit='return calcheckform(this, submitted,{$ecal_class->java_format_code})'>
-		<table style='width:98%' class='fborder' >";
-
-        if ($action == "ed")
-        {
-            $caption = EC_LAN_66; // edit Event
-
-        } elseif ($action == "ne")
-        {
-            $caption = EC_LAN_28; // Enter New Event
-        }
-        else
-        {
-            $caption = EC_LAN_83;
-        }
-
-        $text .= "
-		<tr>
-		<td class='forumheader3' style='width:20%'>".EC_LAN_72." </td>
-		<td class='forumheader3' style='width:80%'> ".EC_LAN_67." ";
-
-
-        $text .= make_calendar("start_date",$ne_startdate)."&nbsp;&nbsp;&nbsp;".EC_LAN_73." ".make_calendar("end_date",$ne_enddate);
-        $text .= "
-		</td>
-		</tr>
-		<tr>
-		<td class='forumheader3' style='width:20%'>".EC_LAN_71." </td>
-		<td class='forumheader3' style='width:80%'>
-		".EC_LAN_67;
-		
-
-		$text .= make_hourmin("ne_",$ne_hour,$ne_minute)."&nbsp;&nbsp;".EC_LAN_73.make_hourmin('end_',$end_hour,$end_minute);
-		$text .= "<br /><input type='checkbox' name='allday' value='1' ".(isset($allday) && $allday == 1 ? "checked='checked'" :"")." />";
-        $text .= EC_LAN_64."
-		</td>
-		</tr>
-		<tr>
-		<td class='forumheader3' style='width:20%'>".EC_LAN_65."</td>
-		<td class='forumheader3' style='width:80%'>";
-		$text .= "<input type='checkbox' name='recurring' value='1'  ".(isset($recurring) && $recurring == 1 ? "checked='checked'" : "")." />";
-        $text .= EC_LAN_63."
-		</td>
-		</tr>
-		<tr>
-		<td class='forumheader3' style='width:20%'>".EC_LAN_70." *</td>
-		<td class='forumheader3' style='width:80%'>
-		<input class='tbox' type='text' name='ne_title' size='75' value='".(isset($ne_title) ? $ne_title : "")."' maxlength='200' style='width:95%' />
-		</td>
-		</tr>
-		<tr>
-		<td class='forumheader3' style='width:20%'>".EC_LAN_52." </td>
-		<td class='forumheader3' style='width:80%'>
-		<select name='ne_category' class='tbox'>";
-        // Check if supervisor, if so get all categories, otherwise just get those the user is allowed to see
-		$cal_arg = ($ecal_class->cal_super ? "" : "find_in_set(event_cat_addclass,'".USERCLASS_LIST."')");
-        if ($sql->db_Select('event_cat', 'event_cat_id, event_cat_name', $cal_arg))
-		{
-            while ($row = $sql->db_Fetch(MYSQL_ASSOC))
-			{
-				$text .= "<option value='{$row['event_cat_id']}' ".(isset($ne_category) && $ne_category == $row['event_cat_id'] ? "selected='selected'" :"")." >".$row['event_cat_name']."</option>";
-            }
-        }
-		else
-		{
-            $text .= "<option value=''>".EC_LAN_91."</option>";
-        }
-        $text .= "</select>
-		</td>
-		</tr>";
-
-        $text .= "
-		<tr>
-		<td class='forumheader3' style='width:20%'>".EC_LAN_32." </td>
-		<td class='forumheader3' style='width:80%'>
-		<input class='tbox' type='text' name='ne_location' size='60' value='".(isset($ne_location) ? $ne_location : "")."' maxlength='200' style='width:95%' />
-		</td>
-		</tr>
-
-		<tr>
-		<td class='forumheader3' style='width:20%'>".EC_LAN_57." *</td>
-		<td class='forumheader3' style='width:80%'>
-		<textarea class='tbox' name='ne_event' cols='59' rows='8' style='width:95%'>".(isset($ne_event) ? $ne_event : "")."</textarea>
-		</td>
-		</tr>";
-        // * *BK*
-        // * *BK* Only display for forum thread if it is required.  No point in being in if not wanted
-        // * *BK* or if forums are inactive
-        // * *BK*
-        if (isset($pref['eventpost_forum']) && $pref['eventpost_forum'] == 1)
-        {
-            $text .= "
-			<tr>
-			<td class='forumheader3' style='width:20%'>".EC_LAN_58." </td>
-			<td class='forumheader3' style='width:80%'>
-			<input class='tbox' type='text' name='ne_thread' size='60' value='".(isset($ne_thread) ? $ne_thread : "")."' maxlength='100' style='width:95%' />
-			</td>
-			</tr>";
-        }
-        // * *BK*
-        // * *BK* If the user is logged in and has their email set plus the field is empty then put in
-        // * *BK* their email address.  They can always take it out if they want, its not a required field
-        if (empty($ne_email) && ($action == "ne") && defined('USEREMAIL'))
-        {
-            $ne_email = USEREMAIL;
-        }
-        $text .= "
-		<tr>
-		<td class='forumheader3' style='width:20%'>".EC_LAN_59." </td>
-		<td class='forumheader3' style='width:80%'>
-		<input class='tbox' type='text' name='ne_email' size='60' value='$ne_email' maxlength='150' style='width:95%' />
-		</td></tr>
-		<tr>
-		<td class='forumheader3' colspan='2' >".EC_LAN_105." </td>
-		</tr>
-
-		<tr>
-		<td class='forumheader' colspan='2' style='text-align:center'>";
-        if ($action == "ed")
-		{
-            $text .= "<input class='button' type='submit' name='ne_update' value='".EC_LAN_60."' onclick='submitted=this.name' />
-			<input type='hidden' name='id' value='".$qs[1]."' />";
-        }
-		else
-		{
-            $text .= "<input class='button' type='submit' name='ne_insert' value='".EC_LAN_28."' onclick='submitted=this.name' />";
-        }
-        $text .= "<input type='hidden' name='qs' value='".e_QUERY."' /></td>
-		</tr>
-		</table>
-		</form>";
-
-        $ns->tablerender($caption, $text);
-        require_once(FOOTERF);
-        exit;
-    }
-    else
-    {
-        header("location:".e_PLUGIN."calendar_menu/event.php");
-        exit;
-    }
-}   // End of "Enter New Event
-
-//-----------------------------------------------
-// show events
-// $month, $year have the month required
-//-----------------------------------------------
-$monthstart		= mktime(0, 0, 0, $month, 1, $year);
-$firstdayarray	= getdate($monthstart);
-$monthend		= mktime(0, 0, 0, $month + 1, 1, $year) -1 ;
-$lastdayarray	= getdate($monthend);
-
-$prevmonth		= ($month-1);
-$prevyear		= $year;
-if ($prevmonth == 0)
-{
-    $prevmonth	= 12;
-    $prevyear	= ($year-1);
-}
-$previous		= mktime(0, 0, 0, $prevmonth, 1, $prevyear);
-
-$nextmonth		= ($month + 1);
-$nextyear		= $year;
-if ($nextmonth == 13)
-{
-    $nextmonth	= 1;
-    $nextyear	= ($year + 1);
-}
-
-$prop		= mktime(0, 0, 0, $month, $day, $year);		// Sets start date for new event entry
-$next		= mktime(0, 0, 0, $nextmonth, 1, $nextyear);	// Used by nav buttons
-$nowmonth	= $ecal_class->cal_date['mon'];
-$nowyear	= $ecal_class->cal_date['year'];
-
-
-$py				= $year-1;
-$prevlink		= mktime(0, 0, 0, $month, 1, $py);
-$ny				= $year + 1;
-$nextlink		= mktime(0, 0, 0, $month, 1, $ny);
-
-if (is_readable(THEME."calendar_template.php")) 
-{  // Has to be require
-  require(THEME."calendar_template.php");
-}
-else 
-{
-  require(e_PLUGIN."calendar_menu/calendar_template.php");
-}
-
-$text2 = "";
-// time switch buttons
-$text2 .= $tp -> parseTemplate($CALENDAR_TIME_TABLE, FALSE, $calendar_shortcodes);
-
-// navigation buttons
-$text2 .= $tp -> parseTemplate($CALENDAR_NAVIGATION_TABLE, FALSE, $calendar_shortcodes);
-
-
-// ****** CAUTION - the category dropdown also used $sql object - take care to avoid interference!
-
-$event = array();
-$extra = '';
-
-if ($ds == "event")
-{		// Show single event
-	$qry = "
-	SELECT e.*, ec.*
-	FROM #event as e
-	LEFT JOIN #event_cat as ec ON e.event_category = ec.event_cat_id
-	WHERE e.event_id='".intval($eveid)."'
-	{$ecal_class->extra_query} 
-	";
-	$sql2->db_Select_gen($qry);
-    $row = $sql2->db_Fetch();
-    if ($row['event_recurring']=='1')			// Single event, selected by ID. So day/month must match
-    {
-	  $row['event_start'] = mktime(0,0,0,$row['event_rec_y'],$row['event_rec_m'],$year);
-	  $row['event_end'] = $row['event_start'];   
-    }
-    $event[] = $row;
-    $next10_start = $event[0]['event_start'];
-	$text2 .= $tp -> parseTemplate($EVENT_EVENT_TABLE_START, FALSE, $calendar_shortcodes);
-	$text2 .= show_event($event);
-	$text2 .= $tp -> parseTemplate($EVENT_EVENT_TABLE_END, FALSE, $calendar_shortcodes);
-
-}
-else
-{
-  if ($ds == 'one')
-  {  // Show events from one day
-    $tmp			= getdate($action);
-    $selected_day	= $tmp['mday'];
-    $selected_mon	= $tmp['mon'];
-    $start_time		= $action;
-    $end_time		= $action + 86399;
-	$next10_start   = $end_time + 1;
-    $cap_title		= " - ".$months[$selected_mon-1]." ".$selected_day;
-    $extra = " OR (e.event_rec_y = ".intval($selected_mon)." AND e.event_rec_m = ".intval($selected_day).") ";
-  }
-  else
-  {  // Display whole of selected month
-        $start_time		= $monthstart;
-        $end_time		= $monthend;
-		$next10_start   = $end_time + 1;
-        $cap_title		= '';
-  $extra = " OR e.event_rec_y = ".intval($month)." ";
-  }
-
-
-    $qry = "
-	SELECT e.*, ec.*
-	FROM #event as e
-	LEFT JOIN #event_cat as ec ON e.event_category = ec.event_cat_id WHERE (e.event_recurring = '0' AND 
-	((e.event_start >= ".intval($start_time)." AND e.event_start <= ".intval($end_time).")
-	OR (e.event_end >= ".intval($start_time)." AND e.event_end <= ".intval($end_time).")
-	OR (e.event_start <= ".intval($start_time)." AND e.event_end >= ".intval($end_time).") )
-	{$extra})
-	{$category_filter} 
-	{$ecal_class->extra_query} 
-	ORDER BY e.event_start ASC
-	";
-
-// Query generates a list of event IDs in $idarray which meet the criteria.
-// $idarray has one primary index location for each day of month, then secondary for events.
-  if ($cal_count=$sql->db_Select_gen($qry))
-  {
-    while ($row = $sql->db_Fetch())
-    {
-      if ($row['event_recurring']=='1')	// Recurring events
-      {
-	    if  (($row['event_rec_y'] == $month) && (!in_array($row['event_id'], $idArray)))		// Only allow one instance of each recurring event
-        {
-		  $tmp = getdate($row['event_start']);
-		  $row['event_start'] = mktime($tmp['hours'],$tmp['minutes'],0,$row['event_rec_y'],$row['event_rec_m'],$year);
-		  $row['event_end'] = $row['event_start']; 
-          $events[$row['event_rec_m']][] = $row;
-          $idArray[] = $row['event_id'];
-        }
-      }
-      else
-      {
-        if ($ds == 'one')
-        {
-          if (!isset($idArray) || !is_array($idArray) || !in_array($row['event_id'], $idArray))
-          {
-            $events[$selected_day][] = $row;
-            $idArray[] = $row['event_id'];
-          }
-        }
-        else
-        {  // Multiple events
-            if ($row['event_start'] < intval($start_time))
-            {
-              $start_day = "1";		// Event starts before this month
-            }
-            else
-            {
-              $tmp		= getdate($row['event_start']);
-			  $start_day	= $tmp['mday'];
-			}
-            if ($row['event_end'] < $row['event_start'])
-            {  // End date before start date
-              $end_day = $start_day;
-            }
-            else
-            {
-              if ($row['event_end'] > intval($end_time))
-              {
-                $end_day = "31";	// Event ends after this month
-              }
-              else
-              {
-                $tmp = getdate($row['event_end']);
-                $end_day	= $tmp['mday'];
-              }
-            }
-            for ($i = $start_day; $i <= $end_day; $i++)
-            {
-              if (!isset($idArray) || !is_array($idArray) || !in_array($row['event_id'], $idArray))
-              {
-                $events[$i][] = $row;
-                $idArray[] = $row['event_id'];
-              }
-        	}
-      	}
-      }
-    }
-  }
-}
-
-
-// event list
-if(isset($events) && is_array($events))
-{
-	$text2 .= $tp -> parseTemplate($EVENT_EVENTLIST_TABLE_START, FALSE, $calendar_shortcodes);
-	foreach ($events as $dom => $event){
-		$text2 .= show_event($event);
-	}
-	$text2 .= $tp -> parseTemplate($EVENT_EVENTLIST_TABLE_END, FALSE, $calendar_shortcodes);
-}
-
-
-/*
-$nextmonth = mktime(0, 0, 0, $month + 1, 1, $year)-1;
-if (!isset($next10_start))
-{
-    $next10_start = $nextmonth;
-}
-*/
-
-// Show next 10 events after current event/day/month (doesn't show recurring events)
-$qry = "
-SELECT e.* FROM #event AS e
-LEFT JOIN #event_cat AS ec ON e.event_category = ec.event_cat_id
-WHERE e.event_start > '".intval($next10_start)."' {$ecal_class->extra_query} {$category_filter}
-ORDER BY e.event_start ASC
-LIMIT 0, 10
-";
-
-$num = $sql->db_Select_gen($qry);
-if ($num != 0)
-{
-	$gen = new convert;
-	$archive_events = "";
-//	while ($events = $sql->db_Fetch())
-	while ($thisevent = $sql->db_Fetch())
-	{
-		$archive_events .= $tp -> parseTemplate($EVENT_ARCHIVE_TABLE, FALSE, $calendar_shortcodes);
-	}
-}
-else
-{
-	$archive_events = $tp -> parseTemplate($EVENT_ARCHIVE_TABLE_EMPTY, FALSE, $calendar_shortcodes);
-}
-
-$text2 .= $tp -> parseTemplate($EVENT_ARCHIVE_TABLE_START, FALSE, $calendar_shortcodes);
-$text2 .= $archive_events;
-$text2 .= $tp -> parseTemplate($EVENT_ARCHIVE_TABLE_END, FALSE, $calendar_shortcodes);
-
-
-$caption = EC_LAN_80; // "Event List";
-$ns->tablerender($caption.(isset($cap_title) ? $cap_title : ""), $text2);
-require_once(FOOTERF);
-
-
-// Display one event in a form which can be expanded.
-function show_event($day_events)
-{
-	global $tp, $cal_super, $_POST, $ds, $thisevent, $EVENT_ID, $EVENT_EVENT_TABLE, $calendar_shortcodes, $event_author_id, $event_author_name;
-    $text2 = "";
-	foreach($day_events as $event)
-    {
-		$thisevent = $event;
-        $gen = new convert;
-            $lp = explode(".", $thisevent['event_author'],2);
-            if (preg_match("/[0-9]+/", $lp[0]))
-            {
-                $event_author_id = $lp[0];
-                $event_author_name = $lp[1];
-            }
-			$text2 .= $tp -> parseTemplate($EVENT_EVENT_TABLE, FALSE, $calendar_shortcodes);
-    }
-    return $text2;
-}
-
-
-function headerjs()
-{
-    global $cal;
-    $script = $cal->load_files();
-/*
-	$script .= "
-	<script type=\"text/javascript\">
-	<!--
-	function calcheckform(thisform)
-	{
-		var testresults=true;
-		var temp;
-		temp = thisform.start_date.value.split(\"-\");
-		var sdate = temp[0] + temp[1] + temp[2] + thisform.ne_hour.options[thisform.ne_hour.selectedIndex].value + thisform.ne_minute.options[thisform.ne_minute.selectedIndex].value
-		temp = thisform.end_date.value.split(\"-\");
-		var edate = temp[0] + temp[1] + temp[2] + thisform.end_hour.options[thisform.end_hour.selectedIndex].value + thisform.end_minute.options[thisform.end_minute.selectedIndex].value
-
-		testresults=true;
-
-		if (edate <= sdate && !thisform.allday.checked && testresults )
-		{
-			alert('".EC_LAN_99."');
-			testresults=false;
-		}
-		if ((thisform.ne_title.value=='' || thisform.ne_event.value=='') && testresults)
-		{
-			alert('".EC_LAN_98."');
-			testresults=false;
-		}
-
-		if (testresults)
-		{
-			if (thisform.subbed.value=='no')
-			{
-				thisformm.subbed.value='yes';
-				testresults=true;
-			}
-		else
-			{
-				alert('".EC_LAN_113."');
-				return false;
-			}
-		}
-		return testresults;
-	}
-	-->
-	</script>";
-*/
-	return $script;
-}
-
-?>
+<?php
+/*
+ * e107 website system
+ *
+ * Copyright (C) 2002-2013 e107 Inc (e107.org)
+ * Released under the terms and conditions of the
+ * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
+ *
+ * Event calendar - event entry and display
+ *
+ * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/event.php $
+ * $Id: event.php 13099 2013-04-17 20:36:19Z e107steved $
+ */
+
+require_once('../../class2.php');
+
+if (isset($_POST['viewallevents']))
+{  // Triggered from NAV_BUT_ALLEVENTS
+    Header('Location: '.e_PLUGIN.'calendar_menu/calendar.php?'.$_POST['enter_new_val']);
+	exit();
+}
+
+if (isset($_POST['doit']))
+{  // Triggered from NAV_BUT_ENTEREVENT
+    Header('Location: '.e_PLUGIN.'calendar_menu/event.php?ne.'.$_POST['enter_new_val']);
+	exit();
+}
+
+if (isset($_POST['subs']))
+{
+    Header('Location: '.e_PLUGIN.'calendar_menu/subscribe.php');
+}
+
+if (isset($_POST['printlists']))
+{
+    Header("Location: " . e_PLUGIN . "calendar_menu/ec_pf_page.php");
+	exit();
+} 
+
+include_lan(e_PLUGIN.'calendar_menu/languages/'.e_LANGUAGE.'.php');
+define('PAGE_NAME', EC_LAN_80);
+
+require_once(e_PLUGIN.'calendar_menu/ecal_class.php');
+global $ecal_class;
+if (!is_object($ecal_class)) $ecal_class = new ecal_class;
+$cal_super = $ecal_class->cal_super;
+
+require_once(e_PLUGIN.'calendar_menu/calendar_shortcodes.php');
+require_once(e_HANDLER."calendar/calendar_class.php");
+$cal = new DHTML_Calendar(true);
+
+$cat_filter = intval(varset($_POST['event_cat_ids'],-1));
+if ($cat_filter == -1) $cat_filter = '*';
+$mult_count = 0;
+
+
+$e_wysiwyg = $pref['eventpost_editmode'] == 2 ? 'ne_event' : '';
+
+
+// Array links db field names to internal variables
+$ev_fields = array(
+	'event_id' 		=> 'id',
+	'event_start' 	=> 'ev_start',
+	'event_end' 	=> 'ev_end',
+	'event_allday' 	=> 'ev_allday',
+	'event_recurring' => 'recurring',
+	'event_title' 	=> 'ev_title',
+	'event_location' => 'ev_location',
+	'event_details' => 'ev_event',
+//	'event_author' 	=> 'ne_author',			- not needed - its always the user creating the event
+	'event_contact' => 'ev_email',
+	'event_category' => 'ev_category',
+	'event_thread' 	=> 'ev_thread'
+);
+
+//--------------------------------------
+// Event to add or update
+//--------------------------------------
+if ((isset($_POST['ne_insert']) || isset($_POST['ne_update'])) && ($cal_super  || check_class($ecal_class->pref['eventpost_admin'])))
+{  
+	$ev_start = $ecal_class->make_date($_POST['ne_hour'], $_POST['ne_minute'],$_POST['start_date']);
+	if (($_POST['ne_event'] == '') || !isset($_POST['qs']))
+	{	// Problem - tell user to go away - fields are blank (mostly checked by JS)
+		header('location:event.php?'.$ev_start.'.0.m3');
+	}
+	elseif (!isset($_POST['ne_category']) || (intval($_POST['ne_category']) == 0))
+	{
+		header('location:event.php?'.$ev_start.'.0.m6');
+	}
+	else
+	{
+		$ev_end			= $ecal_class->make_date($_POST['end_hour'], $_POST['end_minute'],$_POST['end_date']);
+		$ev_title		= $tp->toDB($_POST['ne_title']);
+		$ev_location	= $tp->toDB($_POST['ne_location']);
+		$ev_event		= $tp->toDB($_POST['ne_event']);
+		$ev_email		= $tp->toDB($_POST['ne_email']);
+		$ev_category	= intval($_POST['ne_category']);
+		$ev_thread		= $tp->toDB($_POST['ne_thread']);
+		$temp_date 		= $ecal_class->gmgetdate($ecal_class->make_date(0,0,$_POST['start_date']));
+		$ev_allday		= intval($_POST['allday']);
+		$recurring		= intval($_POST['ec_recur_type']);
+		if ($recurring >= 100) $recurring += intval($_POST['ec_recur_week']) - 100;
+		// 
+		if ($_POST['recurring'] == 1)
+		{
+			$rec_m = $temp_date['mday'];		// Day of month
+			$rec_y = $temp_date['mon'];			// Month number
+		}
+		else
+		{
+			$rec_m = '';
+			$rec_y = '';
+		}
+
+		$report_msg = '.m3';
+		if (isset($_POST['ne_insert']))
+		{  // Bits specific to inserting a new event
+			$qs = preg_replace("/ne./i", "", $_POST['qs']);	
+			if ($_POST['ec_gen_multiple'])
+			{
+				$mult_count = $ecal_class->gen_recur($ev_start,$ev_end,$recurring,$ev_start,$ev_end);
+			}
+			if ($mult_count <= 1)
+			{
+				$qry = " 0, '".intval($ev_start)."', '".intval($ev_end)."', '".$ev_allday."', '".$recurring."', '".time()."', '$ev_title', '$ev_location', '$ev_event', '".USERID.".".USERNAME."', '".$ev_email."', '".$ev_category."', '".$ev_thread."', '".intval($rec_m)."', '".intval($rec_y)."' ";
+		        $evId = $sql->db_Insert("event", $qry);
+				$ecal_class->cal_log(1,'db_Insert',$qry, $ev_start, $evId);
+				$report_msg = '.m4';
+			}
+		}
+	
+		if (isset($_POST['ne_update']))
+		{  // Bits specific to updating an existing event
+			$evId = intval($_POST['id']);
+			$qry = "event_start='".intval($ev_start)."', event_end='".intval($ev_end)."', event_allday='".$ev_allday."', event_recurring='".$recurring."', event_datestamp= '".time()."', event_title= '$ev_title', event_location='$ev_location', event_details='$ev_event', event_contact='".$ev_email."', event_category='".$ev_category."', event_thread='".$ev_thread."', event_rec_m='".intval($rec_m)."', event_rec_y='".intval($rec_y)."' WHERE event_id=".$evId;
+			$sql->db_Update("event", $qry);
+			$ecal_class->cal_log(2,'db_Update',$qry, $ev_start, $evId);
+			$qs = preg_replace("/ed./i", "", $_POST['qs']);
+			$report_msg = '.m5';
+		}
+		if ($mult_count <= 1)
+		{
+		// Now clear cache  - just do the lot for now - get clever later
+		$e107cache->clear('nq_event_cal');
+		header('location:event.php?'.$ev_start.'.'.$qs.$report_msg);
+		}
+	}
+}
+
+
+
+$action = '';
+
+require_once(HEADERF);
+
+if ($mult_count > 1)
+{	// Need to handle writing of multiple events - display confirmation form
+	$message = str_replace('-NUM-', count($mult_count), EC_LAN_88);
+	$text = "
+		<form method='post' action='".e_SELF."?mc.{$ev_start}.{$ev_end}' id='mulconf'><table style='width:98%' class='fborder' >
+		<colgroup><col style='width:30%' /><col style='width:70%' /></colgroup>
+		<tr><td class='forumheader3' colspan='2' style='text-align:center; color:red'>".$message."<br />".EC_LAN_89."</td></tr>";
+	if ($ev_allday)
+	{
+      $text .= "
+		<tr><td class='forumheader3' >".EC_LAN_173." </td><td class='forumheader3'> ".$ecal_class->event_date_string($ev_start)." ".EC_LAN_175."</td></tr>
+		<tr><td class='forumheader3' >".EC_LAN_174." </td><td class='forumheader3'> ".$ecal_class->event_date_string($ev_end)." ".EC_LAN_175."</td></tr>";
+	}
+	else
+	{
+      $text .= "
+		<tr><td class='forumheader3' >".EC_LAN_173." </td><td class='forumheader3'> ".$ecal_class->event_date_string($ev_start)." ".$ecal_class->time_string($ev_start)." "."</td></tr>
+		<tr><td class='forumheader3' >".EC_LAN_174." </td><td class='forumheader3'> ".$ecal_class->event_date_string($ev_end)." ".$ecal_class->time_string($ev_end)." "."</td></tr>";
+	}
+    $text .= "
+		<tr><td class='forumheader3'>".EC_LAN_176."</td><td class='forumheader3'>".$ecal_class->get_recur_text($recurring)."</td></tr>
+		<tr><td class='forumheader3'>".EC_LAN_70."</td><td class='forumheader3'>".$ev_title."</td></tr>
+		<tr><td class='forumheader3'>".EC_LAN_52."</td><td class='forumheader3'>".$ecal_class->get_category_text($ev_category)."</td></tr>
+		<tr><td class='forumheader3'>".EC_LAN_32."</td><td class='forumheader3'>".$ev_location."</td></tr>
+		<tr><td class='forumheader3'>".EC_LAN_57."</td><td class='forumheader3'>".$ev_event."</td></tr>";
+		
+    // Only display for forum thread/link if required.  No point if not wanted
+    if (isset($pref['eventpost_forum']) && $pref['eventpost_forum'] == 1)
+    {
+		$text .= "<tr><td class='forumheader3'>".EC_LAN_58." </td><td class='forumheader3'>".$ev_thread."</td></tr>";
+    }
+    $text .= "<tr><td class='forumheader3'>".EC_LAN_59."</td><td class='forumheader3'>".$ev_email."</td></tr>
+		<tr><td class='forumheader' colspan='2' style='text-align:center'>
+            <input class='button' type='submit' name='mc_cancel' value='".EC_LAN_177."' />
+            <input class='button' type='submit' name='mc_accept' value='".EC_LAN_178."' />
+			<input type='hidden' name='qs' value='".e_QUERY."' />";
+	foreach ($ev_fields as $k => $v)
+	{
+		$text .= "<input type='hidden' name='ev_{$k}' value='".$$v."' />";
+	}
+	$text .= "</td></tr></table></form>";
+
+        $ns->tablerender(EC_LAN_179, $text);
+        require_once(FOOTERF);
+        exit;
+}
+
+if (isset($_POST['jump']))
+{
+  $smarray	= $ecal_class->gmgetdate(gmmktime(0, 0, 0, $_POST['jumpmonth'], 1, $_POST['jumpyear']));
+  $month	= $smarray['mon'];
+  $year		= $smarray['year'];
+}
+else
+{
+	if (e_QUERY)
+	{
+		$qs			= explode('.', e_QUERY);
+		$action		= trim($qs[0]);			// Often a date if just viewing
+		$ds			= varset($qs[1],'');
+		$eveid		= intval(varset($qs[2], 0));
+	}
+
+	if ($action == '')
+	{
+		$month		= $ecal_class->cal_date['mon'];
+		$year		= $ecal_class->cal_date['year'];
+	}
+	else
+	{
+		if (is_numeric($action)) $smarray = $ecal_class->gmgetdate($action); else $smarray = $ecal_class->gmgetdate($ds);
+		$month		= $smarray['mon'];
+		$year		= $smarray['year'];
+	}
+}
+
+
+if ($cal_super || check_class($pref['eventpost_admin']))
+{  // Bits relating to 'delete event', and generation of multiple events
+  if ($action == 'mc')
+  {
+    if (isset($_POST['mc_cancel']))
+	{
+	  $message = EC_LAN_179;
+	}
+	elseif (isset($_POST['mc_accept']))
+	{   // Go for it! Write lots of events
+	  // Start by reading all the info from the hidden fields
+	  $wr_record = array();
+	  foreach ($ev_fields as $k => $v)
+	  {
+		$wr_record[$k] = $tp->toDB($_POST['ev_'.$k]);
+	  }
+	  $wr_record['event_author'] = USERID.".".USERNAME;
+	  $wr_record['event_datestamp'] = time();
+      $mult_count = $ecal_class->gen_recur($wr_record['event_start'],$wr_record['event_end'],$wr_record['event_recurring'],$wr_record['event_start'],$wr_record['event_end']);
+	  $wr_record['event_recurring'] = 0;		// Individual events are non-recurring!
+	  
+	// Now write all the entries
+	  $wc = 0;
+	  foreach ($mult_count as $mc)
+	  {
+		$wr_record['event_start'] = $mc;
+		$wr_record['event_end'] = merge_date_time($mc,$wr_record['event_end']);
+//		echo "Write record: ".$wr_record['event_start']." to ".$wr_record['event_end']."<br />";
+      if ($sql->db_Insert("event", $wr_record)) $wc++;
+	  }
+	  $ecal_class->cal_log(5,'db_Insert',$qry, $ev_start);
+
+	  $message = str_replace('-NUM-',$wc,EC_LAN_41);
+	  if ($wc != count($mult_count)) $message .= "<br /><br />".(count($mult_count)-$wc)." ".EC_LAN_180;
+	}
+	$action = '';
+  }
+  
+  
+  if (isset($_POST['confirm']))
+  {
+	$qry = "event_id='".intval($_POST['existing'])."' ";
+    if ($sql->db_Delete("event", $qry))
+    {
+        $message = EC_LAN_51; //Event Deleted
+		$ecal_class->cal_log(3,'db_Delete',$qry,$ev_start);
+    }
+    else
+    {
+        $message = EC_LAN_109; //Unable to Delete event for some mysterious reason
+    }
+  }
+
+
+  if ($action == "de")
+  {  // Delete event - show confirmation form
+    $text = "<div style='text-align:center'>
+	<b>".EC_LAN_48."</b>
+	<br /><br />
+	<form method='post' action='".e_SELF."' id='calformz' >
+	<input class='button' type='submit' name='cancel' value='".EC_LAN_49."' />
+	<input class='button' type='submit' name='confirm' value='".EC_LAN_50."' />
+	<input type='hidden' name='existing' value='".$qs[1]."' />
+	<input type='hidden' name='subbed' value='no' />
+	</form>
+	</div>";
+    $ns->tablerender(EC_LAN_46, $text); // Confirm Delete Event
+    require_once(FOOTERF);
+    exit;
+  }
+
+
+
+  if (isset($_POST['cancel']))
+  {    // Delete Cancelled
+    $message = EC_LAN_47;
+  }
+}  // End - if ($cal_super)
+
+
+// set up data arrays ----------------------------------------------------------------------------------
+// (these used in the nav shortcodes)
+$monthabb	= Array(EC_LAN_JAN, EC_LAN_FEB, EC_LAN_MAR, EC_LAN_APR, EC_LAN_MAY, EC_LAN_JUN, EC_LAN_JUL, EC_LAN_AUG, EC_LAN_SEP, EC_LAN_OCT, EC_LAN_NOV, EC_LAN_DEC);
+$months		= array(EC_LAN_0, EC_LAN_1, EC_LAN_2, EC_LAN_3, EC_LAN_4, EC_LAN_5, EC_LAN_6, EC_LAN_7, EC_LAN_8, EC_LAN_9, EC_LAN_10, EC_LAN_11);
+// ----------------------------------------------------------------------------------------------------------
+
+// Messages acknowledging actions
+$poss_message = array('m1' => EC_LAN_41, 'm2' => EC_LAN_42, 'm3' => EC_LAN_43, 'm4' => EC_LAN_44, 'm5' => EC_LAN_45,
+					  'm6' => EC_LAN_145, 'm7' => 'Could have saved -NUM- events');
+if (isset($qs[2])) if (isset($poss_message[$qs[2]]))
+{
+	$message = $poss_message[$qs[2]];
+	$ec = varset($qs[3],0);
+	if ($ec) $message = str_replace('-NUM-',$ec,$message);
+}
+
+
+if (isset($message))
+{
+    $ns->tablerender("", "<div style='text-align:center'><b>".$message."</b></div>");
+}
+
+
+function merge_date_time($date, $time)
+{
+	return ((86400*intval($date/86400)) + ($time % 86400));
+}
+
+//-------------------------------------
+// 		enter new event form
+//-------------------------------------
+if ($action == 'ne' || $action == 'ed')
+{
+	if ($ecal_class->cal_super || check_class($pref['eventpost_admin']))
+	{
+		function make_calendar($boxname, $boxvalue)
+		{
+		  global $ecal_class, $cal;
+		
+	        unset($cal_options);
+	        unset($cal_attrib);
+	        $cal_options['firstDay'] = $ecal_class->ec_first_day_of_week;
+	        $cal_options['showsTime'] = false;
+	        $cal_options['showOthers'] = true;
+	        $cal_options['weekNumbers'] = false;
+	        $cal_options['ifFormat'] = $ecal_class->dcal_format_string;
+	        $cal_attrib['class'] = "tbox";
+	        $cal_attrib['size'] = "12";
+	        $cal_attrib['name'] = $boxname;
+	        $cal_attrib['value'] = $boxvalue;
+	        return $cal->make_input_field($cal_options, $cal_attrib);
+		}
+	
+	
+		function make_hourmin($boxname,$cur_hour,$cur_minute)
+		{
+		  global $pref;
+		  if (isset($pref['eventpost_fivemins'])) $incval = 5; else $incval = 1;
+		  $retval = " <select name='{$boxname}hour' id='{$boxname}hour' class='tbox'>\n";
+		  for($count = "00"; $count <= "23"; $count++)
+		  {
+			$val = sprintf("%02d", $count);
+			$retval .= "<option value='{$val}' ".(isset($cur_hour) && $count == $cur_hour ? "selected='selected'" :"")." >".$val."</option>\n";
+		  }
+		  $retval .= "</select>\n
+			<select name='{$boxname}minute' class='tbox'>\n";
+		  for($count = "00"; $count <= "59"; $count+= $incval)
+		  {
+			$val = sprintf("%02d", $count);
+			$retval .= "<option ".(isset($cur_minute) && $count == $cur_minute ? "selected='selected'" :"")." value='{$val}'>".$val."</option>\n";
+		  }
+		  $retval .= "</select>\n";
+		  return $retval;
+		}
+	
+		function recur_select($curval)
+		{
+		  global $ecal_class;
+		  while ($curval > 150) { $curval -= 100; }		// Could have values up to about 406
+		  $ret = "<select class='tbox' name='ec_recur_type' onchange=\"proc_recur(this.value);\">";
+		  foreach ($ecal_class->recur_type as $k => $v)
+		  {
+		    $selected = ($curval == $k) ? " selected = 'selected'" : "";
+		    $ret .= "<option value='{$k}'{$selected}>{$v}</option>\n";
+		  }
+		  $ret .= "</select>\n";
+		  return $ret;
+		}
+		
+		
+		function recur_week_select($curval)
+		{
+		  global $ecal_class;
+		  $disp = $curval < 100 ? " style='display:none;'" : "";
+		  $curval -= intval($curval % 10);		// Should make it an exact multiple of 100
+		  $ret = "<span id='rec_week_sel'{$disp}><select class='tbox' name='ec_recur_week'>";
+		  foreach ($ecal_class->recur_week as $k => $v)
+		  {
+		    $selected = ($curval == $k) ? " selected = 'selected'" : "";
+		    $ret .= "<option value='{$k}'{$selected}>{$v}</option>\n";
+		  }
+		  $ret .= "</select></span>\n";
+		  return $ret;
+		}
+
+
+	switch ($action)
+	{
+      case 'ed' :	// Editing existing event - read from database
+        $sql->db_Select('event', '*', 'event_id='.intval($qs[1]));
+
+        list($null, $ne_start, $ne_end, $allday, $recurring, $ne_datestamp, $ne_title, $ne_location, $ne_event, $ne_author, $ne_email, $ne_category, $ne_thread) = $sql->db_Fetch();
+
+        $smarray = $ecal_class->gmgetdate($ne_start);
+        $ne_hour = $smarray['hours'];
+        $ne_minute = $smarray['minutes'];
+        $ne_startdate = $ecal_class->full_date($ne_start);
+
+        $smarray = $ecal_class->gmgetdate($ne_end);
+        $end_hour = $smarray['hours'];
+        $end_minute = $smarray['minutes'];
+        $ne_enddate = $ecal_class->full_date($ne_end);
+
+        $caption = EC_LAN_66; // edit Event
+        break;
+		
+	  case 'ne' :	// New event - initialise everything
+        $smarray = $ecal_class->gmgetdate($qs[1]);
+        $month = $smarray['mon'];
+        $year = $smarray['year'];
+        $ne_startdate = $ecal_class->full_date($qs[1]);
+
+        $ne_hour = $smarray['hours'];
+        $ne_minute = $smarray['minutes'];
+
+        $end_hour = $smarray['hours'];
+        $end_minute = $smarray['minutes'];
+        $ne_enddate = $ecal_class->full_date($qs[1]);
+		$recurring = 0;
+        $caption = EC_LAN_28; // Enter New Event
+
+	  default :
+        $caption = EC_LAN_83;
+	}
+
+
+	$text = "
+		<script type=\"text/javascript\">
+		<!--
+		function check_mult(val)
+		{
+		  if (val == true)
+		  {
+		    alert('".EC_LAN_87."');
+		  }
+		}
+		
+		function proc_recur(rec_value)
+		{
+		  if(document.getElementById('rec_week_sel')) 
+		  {
+			target=document.getElementById('rec_week_sel').style;
+			if (rec_value >= 100)
+		    {
+			  target.display = '';
+//		      alert('show');
+			}
+			else
+			{
+			  target.display = 'none';
+//		      alert('hide');
+			}
+		  }
+		  if(document.getElementById('gen_multiple')) 
+		  {
+			target=document.getElementById('gen_multiple').style;
+			if (rec_value > 0)
+		    {
+			  target.display = '';
+			}
+			else
+			{
+			  target.display = 'none';
+			}
+		  }
+		}
+		
+		function calcheckform(thisform, submitted,arrstr)
+		{
+			var testresults=true;
+
+			function calcdate(thisval)
+			{
+			  var temp1;
+			  temp1 = thisval.split(\"{$ecal_class->date_separator}\");
+			  switch (arrstr)
+			  {
+			    case 2 : return temp1[2]+temp1[1]+temp1[0];
+			    case 3 : return temp1[2]+temp1[0]+temp1[1];
+			    default : return temp1[0]+temp1[1]+temp1[2];
+			  }
+			  return 'Error';
+			}
+			//event check - dates are text strings
+			var sdate = calcdate(thisform.start_date.value);
+			var edate = calcdate(thisform.end_date.value);
+			if (edate < sdate)
+			{  // Update end date if its before start date
+			  thisform.end_date.value = thisform.start_date.value;
+//			  alert('End date changed');
+			}
+			sdate = calcdate(thisform.start_date.value) + thisform.ne_hour.options[thisform.ne_hour.selectedIndex].value + thisform.ne_minute.options[thisform.ne_minute.selectedIndex].value;
+			edate = calcdate(thisform.end_date.value) + thisform.end_hour.options[thisform.end_hour.selectedIndex].value + thisform.end_minute.options[thisform.end_minute.selectedIndex].value;
+//			alert('Format: ' + arrstr + '    Start date: '+ sdate + '    End date: ' + edate);
+			
+			testresults=true;
+
+			if (edate <= sdate && !thisform.allday.checked && testresults )
+			{
+				alert('".EC_LAN_99."');
+				testresults=false;
+			}
+			if ((thisform.ne_title.value=='' || thisform.ne_event.value=='') && testresults)
+			{
+				alert('".EC_LAN_98."');
+				testresults=false;
+			}
+
+			if (testresults)
+			{
+				if (thisform.subbed.value=='no')
+				{
+					thisform.subbed.value='yes';
+					testresults=true;
+				}
+			else
+				{
+					alert('".EC_LAN_113."');
+					return false;
+				}
+			}
+			return testresults;
+		}
+		-->
+		</script>";
+
+	$text .= "
+		<form method='post' action='".e_SELF."' id='linkform' onsubmit='return calcheckform(this, submitted,{$ecal_class->java_format_code})'>
+		<table style='width:98%' class='fborder' ><colgroup><col style='width:20%' /><col style='width:80%' /></colgroup>";
+
+    $text .= "
+		<tr><td class='forumheader3'>".EC_LAN_72." </td><td class='forumheader3'> ".EC_LAN_67." ";
+
+    $text .= make_calendar("start_date",$ne_startdate)."&nbsp;&nbsp;&nbsp;".EC_LAN_73." ".make_calendar("end_date",$ne_enddate);
+    $text .= "</td></tr>
+		<tr><td class='forumheader3'>".EC_LAN_71." </td><td class='forumheader3'>".EC_LAN_67;
+
+	$text .= make_hourmin("ne_",$ne_hour,$ne_minute)."&nbsp;&nbsp;".EC_LAN_73.make_hourmin('end_',$end_hour,$end_minute);
+	$text .= "<br /><input type='checkbox' name='allday' value='1' ".(isset($allday) && $allday == 1 ? "checked='checked'" :"")." />";
+    $text .= EC_LAN_64."
+		</td></tr>
+
+		<tr><td class='forumheader3'>".EC_LAN_65."</td><td class='forumheader3'>";
+	$text .= recur_week_select($recurring)."&nbsp;&nbsp;".recur_select($recurring);
+	$disp = $recurring && ($action == 'ne') ? '' : " style='display:none;'";
+	$text .= "<span id='gen_multiple'{$disp}><input type='checkbox' name='ec_gen_multiple' value='1' onchange=\"check_mult(this.checked);\"/>".EC_LAN_86."</span>";
+    $text .= "<br /><span class='smalltext'>".EC_LAN_63."</span>
+		</td></tr>
+		<tr><td class='forumheader3'>".EC_LAN_70." *</td><td class='forumheader3'>
+		<input class='tbox' type='text' name='ne_title' size='75' value='".(isset($ne_title) ? $ne_title : "")."' maxlength='200' style='width:95%' />
+		</td></tr>
+
+		<tr><td class='forumheader3'>".EC_LAN_52." </td><td class='forumheader3'>
+		<select name='ne_category' class='tbox'>";
+        // Check if supervisor, if so get all categories, otherwise just get those the user is allowed to see
+		// Always exclude the default categories
+	$cal_arg = ($ecal_class->cal_super ? "" : "find_in_set(event_cat_addclass,'".USERCLASS_LIST."') AND ");
+	$cal_arg .= "(event_cat_name != '".EC_DEFAULT_CATEGORY."') ";
+    if ($sql->db_Select("event_cat", "*", $cal_arg))
+		{
+            while ($row = $sql->db_Fetch())
+			{
+				$text .= "<option value='{$row['event_cat_id']}' ".(isset($ne_category) && $ne_category == $row['event_cat_id'] ? "selected='selected'" :"")." >".$row['event_cat_name']."</option>";
+            }
+        }
+		else
+		{
+            $text .= "<option value=''>".EC_LAN_91."</option>";
+        }
+        $text .= "</select>
+		</td></tr>";
+
+		switch ($pref['eventpost_editmode'])
+		{
+		  case 1  : 
+			$insertjs = "rows='15' onselect='storeCaret(this);' onclick='storeCaret(this);' onkeyup='storeCaret(this);'";
+			break;
+		  case 2  : 
+			$insertjs = "rows='25' ";
+			break;
+		  default : $insertjs = "rows='15' ";
+		}
+
+        $text .= "
+		<tr><td class='forumheader3'>".EC_LAN_32." </td><td class='forumheader3'>
+		<input class='tbox' type='text' name='ne_location' size='60' value='".(isset($ne_location) ? $ne_location : "")."' maxlength='200' style='width:95%' />
+		</td></tr>
+
+		<tr><td class='forumheader3'>".EC_LAN_57." *</td><td class='forumheader3'>
+		<textarea class='tbox' id='ne_event' name='ne_event' cols='59' style='width:95%' {$insertjs}>".(isset($ne_event) ? $ne_event : "")."</textarea>";
+		if ($pref['eventpost_editmode'] == 1)
+		{
+		  // Show help
+		  require_once(e_HANDLER."ren_help.php");
+		  $text .= "<br />".display_help("helpb", 'event');
+		}
+		
+		$text .= "</td></tr>";
+
+        // Only display for forum thread/link if required.  No point if not wanted
+        if (isset($pref['eventpost_forum']) && $pref['eventpost_forum'] == 1)
+        {
+            $text .= "
+			<tr><td class='forumheader3'>".EC_LAN_58." </td><td class='forumheader3'>
+			<input class='tbox' type='text' name='ne_thread' size='60' value='".(isset($ne_thread) ? $ne_thread : "")."' maxlength='100' style='width:95%' />
+			</td></tr>";
+        }
+
+        // If the user is logged in and has their email set plus the field is empty then put in
+        // their email address.  They can always take it out if they want, its not a required field
+        if (empty($ne_email) && ($action == "ne") && defined('USEREMAIL'))
+        {
+            $ne_email = USEREMAIL;
+        }
+        $text .= "
+		<tr><td class='forumheader3'>".EC_LAN_59." </td><td class='forumheader3'>
+		<input class='tbox' type='text' name='ne_email' size='60' value='$ne_email' maxlength='150' style='width:95%' />
+		</td></tr>
+		<tr>
+		<td class='forumheader3' colspan='2' >".EC_LAN_105." </td>
+		</tr>
+
+		<tr>
+		<td class='forumheader' colspan='2' style='text-align:center'>";
+        if ($action == "ed")
+		{
+            $text .= "<input class='button' type='submit' name='ne_update' value='".EC_LAN_60."' onclick='submitted=this.name' />
+			<input type='hidden' name='id' value='".$qs[1]."' />";
+        }
+		else
+		{
+            $text .= "<input class='button' type='submit' name='ne_insert' value='".EC_LAN_28."' onclick='submitted=this.name' />";
+        }
+        $text .= "<input type='hidden' name='qs' value='".e_QUERY."' /></td>
+		</tr>
+		</table>
+		</form>";
+
+        $ns->tablerender($caption, $text);
+        require_once(FOOTERF);
+        exit();
+    }
+    else
+    {
+		header('location:'.e_PLUGIN.'calendar_menu/event.php');
+        exit();
+    }
+}   // End of "Enter New Event"
+
+
+//-----------------------------------------------
+// show events
+// $month, $year have the month required
+//-----------------------------------------------
+$monthstart		= gmmktime(0, 0, 0, $month, 1, $year);
+$firstdayarray	= $ecal_class->gmgetdate($monthstart);
+$monthend		= gmmktime(0, 0, 0, $month + 1, 1, $year) -1 ;
+$lastdayarray	= $ecal_class->gmgetdate($monthend);
+
+$prevmonth		= ($month-1);
+$prevyear		= $year;
+if ($prevmonth == 0)
+{
+    $prevmonth	= 12;
+    $prevyear	= ($year-1);
+}
+$previous		= gmmktime(0, 0, 0, $prevmonth, 1, $prevyear);
+
+$nextmonth		= ($month + 1);
+$nextyear		= $year;
+if ($nextmonth == 13)
+{
+    $nextmonth	= 1;
+    $nextyear	= ($year + 1);
+}
+
+if ($ds == 'one')
+{
+  $prop		= gmmktime(0, 0, 0, $month, $smarray['mday'], $year);		// Sets start date for new event entry - exact day of month
+}
+else
+{
+  $prop		= gmmktime(0, 0, 0, $month, 1, $year);		// Sets start date for new event entry - beginning of month
+}
+$next		= gmmktime(0, 0, 0, $nextmonth, 1, $nextyear);	// Used by nav buttons
+$nowmonth	= $ecal_class->cal_date['mon'];
+$nowyear	= $ecal_class->cal_date['year'];
+
+
+$py				= $year-1;
+$prevlink		= gmmktime(0, 0, 0, $month, 1, $py);
+$ny				= $year + 1;
+$nextlink		= gmmktime(0, 0, 0, $month, 1, $ny);
+
+if (is_readable(THEME."calendar_template.php")) 
+{  // Has to be require
+  require(THEME."calendar_template.php");
+}
+else 
+{
+  require(e_PLUGIN."calendar_menu/calendar_template.php");
+}
+
+$text2 = "";
+// time switch buttons
+$text2 .= $tp->parseTemplate($CALENDAR_TIME_TABLE, FALSE, $calendar_shortcodes);
+
+// navigation buttons
+$text2 .= $tp->parseTemplate($CALENDAR_NAVIGATION_TABLE, FALSE, $calendar_shortcodes);
+
+
+// ****** CAUTION - the category dropdown also used $sql object - take care to avoid interference!
+
+$ev_list = array();
+
+
+if ($ds == 'event')
+{		// Show single event - bit of a special case
+	$ec_err = FALSE;
+	$qry = "
+	SELECT e.*, ec.event_cat_name,ec.event_cat_icon
+	FROM #event as e
+	LEFT JOIN #event_cat as ec ON e.event_category = ec.event_cat_id
+	WHERE e.event_id='".intval($eveid)."'
+	{$ecal_class->extra_query} 
+	";
+	$sql2->db_Select_gen($qry);
+    $thisevent = $sql2->db_Fetch();
+	// Recurring events - $action has the actual date required (no time) - could be one of a potentially large number of dates it referred to
+    if ($thisevent['event_recurring']>='1')			// Single event, selected by ID. So day/month must match
+    {
+		$temp_arr = $ecal_class->gen_recur($thisevent['event_start'],$thisevent['event_end'],$thisevent['event_recurring'],$action,$action+86400);  // Array of start times - hopefully just one!
+		if (count($temp_arr) == 1)
+		{
+			$thisevent['event_start'] = $temp_arr[0];
+			$thisevent['event_end'] = merge_date_time($action,$thisevent['event_end']);
+		}
+		else
+		{   // Error
+			$ec_err = TRUE;
+		}
+    }
+    $next10_start = $thisevent['event_start'] +1;
+	$text2 .= $tp -> parseTemplate($EVENT_EVENT_TABLE_START, FALSE, $calendar_shortcodes);
+	if ($ec_err) $text2.= "Software Error<br />"; else $text2 .= $tp -> parseTemplate($EVENT_EVENT_TABLE, TRUE, $calendar_shortcodes);
+	$text2 .= $tp -> parseTemplate($EVENT_EVENT_TABLE_END, FALSE, $calendar_shortcodes);
+}
+else
+{
+	if ($ds == 'one')
+	{  // Show events from one day
+	    $tmp			= $ecal_class->gmgetdate($action);
+	    $selected_day	= $tmp['mday'];
+	    $selected_mon	= $tmp['mon'];
+		$start_time		= intval($action);
+		$end_time		= $action + 86399;
+		$next10_start   = $end_time + 1;
+	    $cap_title		= " - ".$months[$selected_mon-1]." ".$selected_day;
+	}
+	else
+	{  // Display whole of selected month
+		$start_time		= $monthstart;
+		$end_time		= $monthend;
+		$next10_start   = $end_time + 1;
+	    $cap_title		= '';
+	}
+
+	//  echo "Start: ".$start_time."  End: ".$end_time."  Cat_filter: ".$cat_filter."<br />";
+	// We'll need virtually all of the event-related fields, so get them regardless
+	$ev_list = $ecal_class->get_events($start_time, $end_time, FALSE, $cat_filter, TRUE, '*', 'event_cat_name,event_cat_icon');
+
+//  echo count($ev_list)." records found<br />";
+  
+	// Now go through and multiply up any recurring records
+	$tim_arr = array();
+	foreach ($ev_list as $k=>$event)
+	{
+		if (is_array($event['event_start']))
+		{
+			foreach ($event['event_start'] as $t)
+			{
+				$tim_arr[$t][] = $k;
+			}
+		}
+		else
+		{
+		  $tim_arr[$event['event_start']][] = $k;
+		}
+	}
+  
+	// Add a sort in here - time/date order
+	ksort($tim_arr);
+
+	// display event list for current month
+	if(count($tim_arr))
+	{
+		$text2 .= $tp -> parseTemplate($EVENT_EVENTLIST_TABLE_START, FALSE, $calendar_shortcodes);
+		//foreach ($tim_arr as $tim => $ptr)
+		foreach ($tim_arr as $tim => $evList)
+		foreach ($evList as $ptr)
+		{
+			$ev_list[$ptr]['event_start'] = $tim;
+	
+			//	  $text2 .= show_event($ev_list[$ptr]);
+			$thisevent = $ev_list[$ptr];
+			$text2 .= $tp -> parseTemplate($EVENT_EVENT_TABLE, TRUE, $calendar_shortcodes);
+		}
+		$text2 .= $tp -> parseTemplate($EVENT_EVENTLIST_TABLE_END, FALSE, $calendar_shortcodes);
+	}
+}
+
+
+// Now display next 10 events
+//echo "Next 10 start: ".$next10_start."<br />";
+$ev_list = $ecal_class->get_n_events(10, $next10_start, $next10_start+86400000, $cat_filter, TRUE, 
+						'event_id,event_start, event_title', 'event_cat_name, event_cat_icon');
+
+
+$num = count($ev_list);
+if ($num != 0)
+{
+	$archive_events = '';
+	foreach ($ev_list as $thisevent)
+	{
+		//    echo "Event start: ".$thisevent['event_start']."<br />";
+		$archive_events .= $tp->parseTemplate($EVENT_ARCHIVE_TABLE, FALSE, $calendar_shortcodes);
+	}
+}
+else
+{
+	$archive_events = $tp -> parseTemplate($EVENT_ARCHIVE_TABLE_EMPTY, FALSE, $calendar_shortcodes);
+}
+
+$text2 .= $tp->parseTemplate($EVENT_ARCHIVE_TABLE_START, FALSE, $calendar_shortcodes);
+$text2 .= $archive_events;
+$text2 .= $tp->parseTemplate($EVENT_ARCHIVE_TABLE_END, FALSE, $calendar_shortcodes);
+
+
+$caption = EC_LAN_80; // "Event List";
+$ns->tablerender($caption.(isset($cap_title) ? $cap_title : ""), $text2);
+
+// Claim back memory no longer required
+unset($ev_list);
+unset($text2);
+unset($tim_arr);
+
+require_once(FOOTERF);
+
+
+
+function headerjs()
+{
+  global $cal;
+  $script = $cal->load_files();
+  return $script;
+}
+
+?>
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/images/recent_icon.png 1.0.4.src/e107_plugins/calendar_menu/images/recent_icon.png
--- 1.0.2.src/e107_plugins/calendar_menu/images/recent_icon.png	1969-12-31 18:00:00.000000000 -0600
+++ 1.0.4.src/e107_plugins/calendar_menu/images/recent_icon.png	2013-09-26 16:49:50.000000000 -0500
@@ -0,0 +1,5 @@
+PNG
+
+   
IHDR         h6   	pHYs    )I   	tEXtComment  *   IDATxMPoMUH6l
+Ā##,I${z^DIU'-)gr}. PJǑ7[u`p f2z700ҥT,pXB7b	`M-w}V{
+ _*+ {m!i˵޴@i(0E::A0K 3$f    IENDB`
\ No newline at end of file
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/languages/English_class.php 1.0.4.src/e107_plugins/calendar_menu/languages/English_class.php
--- 1.0.2.src/e107_plugins/calendar_menu/languages/English_class.php	1969-12-31 18:00:00.000000000 -0600
+++ 1.0.4.src/e107_plugins/calendar_menu/languages/English_class.php	2013-09-26 16:49:50.000000000 -0500
@@ -0,0 +1,74 @@
+<?php
+/*
+ * e107 website system
+ *
+ * Copyright (C) 2002-2012 e107 Inc (e107.org)
+ * Released under the terms and conditions of the
+ * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
+ *
+ * These messages are for the 'user' pages of the event calendar (including event entry/editing)
+ *
+ * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/usersettings.php $
+ * $Id: usersettings.php 11645 2010-08-01 12:57:11Z e107coders $
+ */
+
+/**
+ *	e107 Event calendar plugin
+ *
+ *	Language file - anything called up in ecal_class.php and similar
+ *
+ *	@package	e107_plugins
+ *	@subpackage	event_calendar
+ *	@version 	$Id: English_class.php 11315 2010-02-10 18:18:01Z secretr $;
+ */
+
+// Recurring events texts - the numeric part of each define is the internal value assigned
+define('EC_LAN_RECUR_00', 'no');
+define('EC_LAN_RECUR_01', 'annual');
+define('EC_LAN_RECUR_02', 'biannual');
+define('EC_LAN_RECUR_03', 'quarterly');
+define('EC_LAN_RECUR_04', 'monthly');
+define('EC_LAN_RECUR_05', 'four weekly');
+define('EC_LAN_RECUR_06', 'fortnightly');
+define('EC_LAN_RECUR_07', 'weekly');
+define('EC_LAN_RECUR_08', 'daily');
+define('EC_LAN_RECUR_100', 'Sunday in month');
+define('EC_LAN_RECUR_101', 'Monday in month');
+define('EC_LAN_RECUR_102', 'Tuesday in month');
+define('EC_LAN_RECUR_103', 'Wednesday in month');
+define('EC_LAN_RECUR_104', 'Thursday in month');
+define('EC_LAN_RECUR_105', 'Friday in month');
+define('EC_LAN_RECUR_106', 'Saturday in month');
+
+define('EC_LAN_RECUR_1100', 'First');
+define('EC_LAN_RECUR_1200', 'Second');
+define('EC_LAN_RECUR_1300', 'Third');
+define('EC_LAN_RECUR_1400', 'Fourth');
+
+
+// Notify
+define('NT_LAN_EC_1', 'Event Calendar Events');
+define('NT_LAN_EC_2', 'Event Updated');
+define('NT_LAN_EC_3', 'Update by');
+define('NT_LAN_EC_4', 'IP Address');
+define('NT_LAN_EC_5', 'Message');
+define('NT_LAN_EC_6', 'Event Calendar - Event added');
+define('NT_LAN_EC_7', 'New event posted');
+define('NT_LAN_EC_8', 'Event Calendar - Event modified');
+
+
+// Log messages
+define('EC_ADM_01', 'Event Calendar - add event');
+define('EC_ADM_02', 'Event Calendar - edit event');
+define('EC_ADM_03', 'Event Calendar - delete event');
+define('EC_ADM_04', 'Event Calendar - Bulk Delete');
+define('EC_ADM_05', 'Event Calendar - Multiple Add');
+define('EC_ADM_06', 'Event Calendar - Main options changed');
+define('EC_ADM_07', 'Event Calendar - FE options changed');
+define('EC_ADM_08', 'Event Calendar - Category added');
+define('EC_ADM_09', 'Event Calendar - Category edited');
+define('EC_ADM_10', 'Event Calendar - Category deleted');
+define('EC_ADM_11', 'Event Calendar - Old events deleted');
+
+
+?>
\ No newline at end of file
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/languages/English.php 1.0.4.src/e107_plugins/calendar_menu/languages/English.php
--- 1.0.2.src/e107_plugins/calendar_menu/languages/English.php	2013-10-11 14:02:27.346000028 -0500
+++ 1.0.4.src/e107_plugins/calendar_menu/languages/English.php	2013-09-26 16:49:50.000000000 -0500
@@ -1,383 +1,430 @@
-<?php
-/*
-+ ----------------------------------------------------------------------------+
-|     e107 website system
-|
-|     ?Steve Dun.an 2001-2002
-|     Copyright (C) 2008-2010 e107 Inc (e107.org)
-|     jali.@e107.org
-|
-|     Released under the terms and conditions of the
-|     GNU General Public License (http://gnu.org).
-|
-|     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/languages/English.php $
-|     $Revision: 11678 $
-|     $Id: English.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
-|
-| Various mods by steved:
-|	a) To reflect updates
-|	b) To reflect CVS update to version 1.14 made 29.10.06
-+----------------------------------------------------------------------------+
-*/
-	
-	
-define('EC_ADLAN_1', "Event Calendar");
-define('EC_ADLAN_2', "Configure Event Calendar");
-define('EC_INSTALL', "Install Event Calendar");
-define('EC_UNINSTALL', "Uninstall Event Calendar");
-define('EC_LAN_TODAY', "today");
-
-define('EC_LAN_DAY_1', "1");
-define('EC_LAN_DAY_2', "2");
-define('EC_LAN_DAY_3', "3");
-define('EC_LAN_DAY_4', "4");
-define('EC_LAN_DAY_5', "5");
-define('EC_LAN_DAY_6', "6");
-define('EC_LAN_DAY_7', "7");
-define('EC_LAN_DAY_8', "8");
-define('EC_LAN_DAY_9', "9");
-define('EC_LAN_DAY_10', "10");
-define('EC_LAN_DAY_11', "11");
-define('EC_LAN_DAY_12', "12");
-define('EC_LAN_DAY_13', "13");
-define('EC_LAN_DAY_14', "14");
-define('EC_LAN_DAY_15', "15");
-define('EC_LAN_DAY_16', "16");
-define('EC_LAN_DAY_17', "17");
-define('EC_LAN_DAY_18', "18");
-define('EC_LAN_DAY_19', "19");
-define('EC_LAN_DAY_20', "20");
-define('EC_LAN_DAY_21', "21");
-define('EC_LAN_DAY_22', "22");
-define('EC_LAN_DAY_23', "23");
-define('EC_LAN_DAY_24', "24");
-define('EC_LAN_DAY_25', "25");
-define('EC_LAN_DAY_26', "26");
-define('EC_LAN_DAY_27', "27");
-define('EC_LAN_DAY_28', "28");
-define('EC_LAN_DAY_29', "29");
-define('EC_LAN_DAY_30', "30");
-define('EC_LAN_DAY_31', "31");
-
-define('EC_LAN_0', "January");
-define('EC_LAN_1', "February");
-define('EC_LAN_2', "March");
-define('EC_LAN_3', "April");
-define('EC_LAN_4', "May");
-define('EC_LAN_5', "June");
-define('EC_LAN_6', "July");
-define('EC_LAN_7', "August");
-define('EC_LAN_8', "September");
-define('EC_LAN_9', "October");
-define('EC_LAN_10', "November");
-define('EC_LAN_11', "December");
-define('EC_LAN_JAN', "Jan");
-define('EC_LAN_FEB', "Feb");
-define('EC_LAN_MAR', "Mar");
-define('EC_LAN_APR', "Apr");
-define('EC_LAN_MAY', "May");
-define('EC_LAN_JUN', "Jun");
-define('EC_LAN_JUL', "Jul");
-define('EC_LAN_AUG', "Aug");
-define('EC_LAN_SEP', "Sep");
-define('EC_LAN_OCT', "Oct");
-define('EC_LAN_NOV', "Nov");
-define('EC_LAN_DEC', "Dec");
-define('EC_LAN_12', "Monday");
-define('EC_LAN_13', "Tuesday");
-define('EC_LAN_14', "Wednesday");
-define('EC_LAN_15', "Thursday");
-define('EC_LAN_16', "Friday");
-define('EC_LAN_17', "Saturday");
-define('EC_LAN_18', "Sunday");
-define('EC_LAN_19', "Mon");
-define('EC_LAN_20', "Tue");
-define('EC_LAN_21', "Wed");
-define('EC_LAN_22', "Thu");
-define('EC_LAN_23', "Fri");
-define('EC_LAN_24', "Sat");
-define('EC_LAN_25', "Sun");
-define('EC_LAN_26', "Events this Month");
-define('EC_LAN_27', "No events for this month.");
-define('EC_LAN_28', "Enter New Event");
-define('EC_LAN_29', "When:");
-define('EC_LAN_30', "Category:");
-define('EC_LAN_31', "Posted by:");
-define('EC_LAN_32', "Location:");
-define('EC_LAN_33', "Contact:");
-define('EC_LAN_34', "Jump to");
-define('EC_LAN_35', "Edit");
-define('EC_LAN_36', "Delete");
-define('EC_LAN_37', "None Listed.");
-define('EC_LAN_38', "Not specified");
-define('EC_LAN_39', "Click here for more information");
-define('EC_LAN_40', "Current Month");
-define('EC_LAN_41', "New category created.");
-define('EC_LAN_42', "Event cannot end before it starts.");
-define('EC_LAN_43', "You left required field(s) blank.");
-define('EC_LAN_44', "New event created and entered into database.");
-define('EC_LAN_45', "Event updated in database.");
-define('EC_LAN_46', "Confirm Delete Event");
-define('EC_LAN_47', "Delete cancelled.");
-define('EC_LAN_48', "Please confirm you wish to delete this event - once deleted it cannot be retrieved");
-define('EC_LAN_49', "Cancel");
-define('EC_LAN_50', "Confirm Delete");
-define('EC_LAN_51', "Event deleted.");
-define('EC_LAN_52', "Event Category:");
-define('EC_LAN_53', "Create new category?:");
-define('EC_LAN_54', "Name:");
-define('EC_LAN_55', "Icon:");
-define('EC_LAN_56', "Create");
-define('EC_LAN_57', "Event:");
-define('EC_LAN_58', "source info URL:");
-define('EC_LAN_59', "Contact email:");
-define('EC_LAN_60', "Update Event");
-define('EC_LAN_61', "Go");
-define('EC_LAN_62', "Next -NUM- Events ...");
-define('EC_LAN_63', "Check this if event happens on same day every year, e.g. birthday");
-define('EC_LAN_64', "Check for an all-day event");
-define('EC_LAN_65', "Recurring:");
-define('EC_LAN_66', "Edit Event");
-define('EC_LAN_67', "Start:");
-define('EC_LAN_68', "All day event:");
-define('EC_LAN_69', "Ends:");
-define('EC_LAN_70', "Event Title:");
-define('EC_LAN_71', "Event Time:");
-define('EC_LAN_72', "Event Date:");
-define('EC_LAN_73', "End:");
-//define('edesc_LAN_0', "Count Down");
-//define('edesc_LAN_1', "Still ");
-//define('edesc_LAN_2', "before event on ".SITENAME);
-//define('edesc_LAN_3', "sec");
-//define('edesc_LAN_4', "secs");
-//define('edesc_LAN_5', "min");
-//define('edesc_LAN_6', "mins");
-//define('edesc_LAN_7', "h");
-//define('edesc_LAN_8', "h");
-//define('edesc_LAN_9', "day");
-//define('edesc_LAN_10', "days");
-define('EC_LAN_VIEWCALENDAR', "View Calendar");
-define('EC_LAN_VIEWALLEVENTS', "View all events");
-define('EC_LAN_ALLEVENTS', "All events");
-define('EC_LAN_74', "View Category");
-// ADMIN
-define('EC_LAN_75', "Calendar settings updated.");
-define('EC_LAN_76', "Events can be added by:");
-define('EC_LAN_77', "Update Settings");
-define('EC_LAN_78', "Calendar Settings");
-define('EC_LAN_79', "Calendar View");
-define('EC_LAN_80', "Event List");
-define('EC_LAN_81', "Configure Event Calendar");
-define('EC_LAN_82', "To activate please go to your menus screen and select the calendar_menu into one of your menu areas.");
-define('EC_LAN_83', "Calendar");
-	
-//define('EC_LAN_84', "Css element to use for day header");
-//define('EC_LAN_85', "Default is 'forumheader'");
-//define('EC_LAN_86', "Css element to use for day list");
-//define('EC_LAN_87', "Default is 'forumheader3'");
-//define('EC_LAN_88', "Css element to use for selected day");
-//define('EC_LAN_89', "Default is 'indent'");
-
-//  *BK* Corrections to hard coding by Barry 
-define('EC_LAN_90', "Choose");	
-define('EC_LAN_91', "None defined");	
-define('EC_LAN_92', "View Category");		
-define('EC_LAN_93', "View Events List");		
-define('EC_LAN_94', "Enter New Event");			
-define('EC_LAN_95', "Today");	
-define('EC_LAN_96', "View Calendar");	
-define('EC_LAN_97', "All");		
-define('EC_LAN_98', "Required fields left blank");		
-define('EC_LAN_99', "Event must either be an all day event or finish after it starts");			
-//define('EC_LAN_100', "Categories can be added by");			
-//define('EC_LAN_101', "Set to inactive to disable on the new event form.");	
-define('EC_LAN_102', "Show link to 'more information' with events");
-//define('EC_LAN_103', "On new event entry form.");	
-define('EC_LAN_104', "Calendar Administrator Class");		
-define('EC_LAN_105', "* Required Field");		
-define('EC_LAN_106', "Events");		
-define('EC_LAN_107', "This plugin is a fully featured event calendar with calendar menu.");		
-define('EC_LAN_108', "Event Calendar Upgraded.  See the 'readme.pdf' file for detailed information.");	
-define('EC_LAN_109', "Unable to delete this event.");	
-define('EC_LAN_110', "Event Number ");	
-define('EC_LAN_111', "All the events on ");	
-define('EC_LAN_112', "All the Events in ");	
-define('EC_LAN_113', "Event form already submitted.");
-define('EC_LAN_114', "Week starts with:");
-define('EC_LAN_115', "Sunday");
-define('EC_LAN_116', "Monday");
-define('EC_LAN_117', "Length of daynames (characters)");
-define('EC_LAN_118', "Date format in calendar header:");
-define('EC_LAN_119', "month/year");
-define('EC_LAN_120', "year/month");
-define('EC_LAN_121', "Show Calendar");	
-//define('EC_LAN_122', "Css element to show events on this day (menu)");	
-define('EC_LAN_123', "Subscriptions");
-define('EC_LAN_124', "Calendar Subscriptions");
-define('EC_LAN_125', "Categories available for subscription");
-define('EC_LAN_126', "Subscribed");
-define('EC_LAN_127', "Category");
-define('EC_LAN_128', "No categories available to subscribe to");
-define('EC_LAN_129', "Update");
-define('EC_LAN_130', "Subscriptions updated");
-define('EC_LAN_131', "Return");
-define('EC_LAN_132', "Expand details");
-define('EC_LAN_133', "[read more]");
-define('EC_LAN_134', "You have to provide a category name");
-define('EC_LAN_135', "Event");
-define('EC_LAN_136', "Category Description");
-define('EC_LAN_137', "Future Events");
-
-// Added 12.07.06 for next_event_menu.php
-define('EC_LAN_140', "Forthcoming Events");
-define('EC_LAN_141', "No forthcoming events");
-define('EC_LAN_142', "Only registered and logged in users can subscribe to events");
-define('EC_LAN_143', "Facility not available");
-define('EC_LAN_144', " at ");
-
-// Gap to maintain compatibility with 0.8
-define('EC_LAN_181', "You aren't allowed to do that!");
-
-
-define('EC_ADLAN_A10', "Configuration");
-define('EC_ADLAN_A11', "Categories");
-define('EC_ADLAN_A12', "Calendar");
-define('EC_ADLAN_A13', "Edit");
-define('EC_ADLAN_A14', "New");
-define('EC_ADLAN_A15', "Delete");
-define('EC_ADLAN_A16', "Confirm");
-define('EC_ADLAN_A17', "Proceed");
-define('EC_ADLAN_A18', "Action");
-define('EC_ADLAN_A19', "Administer Categories");
-define('EC_ADLAN_A20', "Calendar Categories");
-define('EC_ADLAN_A21', "Category name");
-
-define('EC_ADLAN_A23', "Create category");
-define('EC_ADLAN_A24', "Edit category");
-define('EC_ADLAN_A25', "Save");
-define('EC_ADLAN_A26', "Category created");
-define('EC_ADLAN_A27', "Unable to create category");
-define('EC_ADLAN_A28', "Changes Saved");
-define('EC_ADLAN_A29', "Unable to save changes");
-
-define('EC_ADLAN_A30', "Category Deleted");
-define('EC_ADLAN_A31', "Tick the confirm box to delete");
-define('EC_ADLAN_A32', "Unable to delete this category");
-define('EC_ADLAN_A33', "None defined");
-define('EC_ADLAN_A34', "Calendar Administrator Class");
-define('EC_ADLAN_A35', "");
-define('EC_ADLAN_A59', "Category is in use. Can not delete.");
-
-define('EC_ADLAN_A80', "Visible to");
-define('EC_ADLAN_A81', "Allow subscription");
-define('EC_ADLAN_A82', "Forced notification class");
-define('EC_ADLAN_A83', "Days ahead to notify of event");
-define('EC_ADLAN_A84', "Advanced message");
-define('EC_ADLAN_A85', "Message on the day");
-define('EC_ADLAN_A86', "Send email");
-define('EC_ADLAN_A87', "None");
-define('EC_ADLAN_A88', "Only advanced");
-define('EC_ADLAN_A89', "Only on the day");
-define('EC_ADLAN_A90', "Advanced and on the day");
-define('EC_ADLAN_A91', "Email Subject");
-define('EC_ADLAN_A92', "Email from (name)");
-define('EC_ADLAN_A93', "Email from email address");
-define('EC_ADLAN_A94', "Add new event class");
-define('EC_ADLAN_A95', "Enable manual subscriptions");
-define('EC_ADLAN_A96', "Disabling this removes the subscriptions button and overrides the category manual subscription setting.");
-//define('EC_ADLAN_A97', "If set to force subscriptions this category will not be displayed in the available subscription list for the user.");
-
-// Added from here 12.07.06 for forthcoming events and mailout upgrades
-define('EC_ADLAN_A100', "Forthcoming Events");
-define('EC_ADLAN_A101', "Days to look forward:");
-define('EC_ADLAN_A102', "Number of events to display:");
-define('EC_ADLAN_A103', "Include recurring events:");
-define('EC_ADLAN_A104', "Title is link to events list:");
-define('EC_ADLAN_A105', "Configure Forthcoming Events Menu");
-define('EC_ADLAN_A106', "Menu has to be enabled on the 'Menu' page");
-define('EC_ADLAN_A107', "Will not work reliably if looking forward more than 59 days");
-define('EC_ADLAN_A108', "Menu Heading");
-define('EC_ADLAN_A109', "Forthcoming Events preferences updated");
-
-define('EC_ADLAN_A110', "Only on previous day");
-define('EC_ADLAN_A111', "Advanced and previous day");
-define('EC_ADLAN_A112', "Previous day and on the day");
-define('EC_ADLAN_A113', "Advanced, previous day and on the day");
-
-define('EC_ADLAN_A114', "Logging of Emails");
-define('EC_ADLAN_A115', "Summary");
-define('EC_ADLAN_A116', "Detailed");
-define('EC_ADLAN_A117', "Message on the day or the previous day");
-define('EC_ADLAN_A118', "Categories to display");
-define('EC_ADLAN_A119', "No categories defined, or error reading database");
-define('EC_ADLAN_A120', "Show category icon in menu");
-define('EC_ADLAN_A121', "Category Description");
-define('EC_ADLAN_A122', "Calendar time reference");
-define('EC_ADLAN_A123', "Calendar time format");
-define('EC_ADLAN_A124', "Current server time: ");
-define('EC_ADLAN_A125', "Current site time: ");
-define('EC_ADLAN_A126', "Current user time: ");
-define('EC_ADLAN_A127', "Determines time display format throughout event calendar.");
-define('EC_ADLAN_A128', "Custom time uses the format in the box on the right");
-define('EC_ADLAN_A129', '"Site Time" uses the offset defined in preferences');
-define('EC_ADLAN_A130', "Event name is link to:");
-define('EC_ADLAN_A131', "Calendar Event");
-define('EC_ADLAN_A132', "Source Info URL");
-define('EC_ADLAN_A133', "Date format for event entry: ");
-define('EC_ADLAN_A134', "Level of logging to main admin log:");
-define('EC_ADLAN_A135', "Edit/delete");
-define('EC_ADLAN_A136', "All changes");
-define('EC_ADLAN_A137', "Can cover additions, updates to and deletions from the event list");
-define('EC_ADLAN_A138', "Event start/end times on 5-minute boundaries");
-define('EC_ADLAN_A139', "(Reduces number of entries in drop-down list)");
-define('EC_ADLAN_A140', "Show number of events for this month in Calendar Menu");
-define('EC_ADLAN_A141', "Maintenance");
-define('EC_ADLAN_A142', "Remove past events ending more than x months ago");
-define('EC_ADLAN_A143', "timed from beginning of current month");
-define('EC_ADLAN_A144', "Event Calendar Maintenance");
-define('EC_ADLAN_A145', "Delete old entries");
-define('EC_ADLAN_A146', "Events older than ");
-define('EC_ADLAN_A147', " deleted");
-define('EC_ADLAN_A148', "Parameter error - nothing deleted");
-define('EC_ADLAN_A149', "No old events to delete, or delete of past events failed");
-define('EC_ADLAN_A150', "Confirm delete events older than ");
-
-define('EC_ADLAN_A151', "e107 Web Site");
-define('EC_ADLAN_A152', "calendar@yoursite.com");
-define('EC_ADLAN_A153', "Log directory must be created manually - create a subdirectory 'log' off your event calendar plugin directory, with '666' access rights");
-define('EC_ADLAN_A154', "Could not change log directory permissions");
-define('EC_ADLAN_A155', "Log directory permissions may require manual update to 0666 or 0766, although depending on your server setup they may work");
-define('EC_ADLAN_A156', "Database upgraded");
-define('EC_ADLAN_A157', "this is the rss feed for the calendar entries");
-define('EC_ADLAN_A158', "Could not create log directory");
-
-define('EC_ADLAN_A159', "Cache Management");
-define('EC_ADLAN_A160', "(Only relevant if cache enabled)");
-define('EC_ADLAN_A161', "Empty Calendar Cache");
-define('EC_ADLAN_A162', "Confirm Empty Cache");
-define('EC_ADLAN_A163', "Cache emptied");
-
-define('EC_ADLAN_A164', "Update completed");
-define('EC_ADLAN_A165', "Calendar menu header links to:");
-define('EC_ADLAN_A166', "Date display in Event List:");
-define('EC_ADLAN_A167', "Date display in Forthcoming Events:");
-define('EC_ADLAN_A168', "Custom date uses the format in the box on the right");
-define('EC_ADLAN_A169', "Determines date display format for event listings");
-define('EC_ADLAN_A170', "Determines date display format for forthcoming events menu");
-define('EC_ADLAN_A171', "Flag recently added/updated events");
-define('EC_ADLAN_A172', "Value is time from update in hours; zero to disable");
-
-
-// Notify
-define("NT_LAN_EC_1", "Event Calendar Events");
-define("NT_LAN_EC_2", "Event Updated");
-define("NT_LAN_EC_3", "Update by");
-define("NT_LAN_EC_4", "IP Address");
-define("NT_LAN_EC_5", "Message");
-define("NT_LAN_EC_6", "Event Calendar - Event added");
-define("NT_LAN_EC_7", "New event posted");
-define("NT_LAN_EC_8", "Event Calendar - Event modified");
-
-
+<?php
+/*
+ * e107 website system
+ *
+ * Copyright (C) 2002-2013 e107 Inc (e107.org)
+ * Released under the terms and conditions of the
+ * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
+ *
+ * These messages are for the 'user' pages of the event calendar (including event entry/editing)
+ *
+ * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/languages/English.php $
+ * $Id: English.php 13076 2013-02-22 22:26:23Z e107steved $
+ */
+
+/**
+ *	e107 Event calendar plugin
+ *
+ *	Language file - general strings
+ *
+ *	@package	e107_plugins
+ *	@subpackage	event_calendar
+ *	@version 	$Id: English.php 13076 2013-02-22 22:26:23Z e107steved $;
+ */
+	
+	
+define('EC_ADLAN_1', "Event Calendar");
+define('EC_ADLAN_2', "Configure Event Calendar");
+define('EC_INSTALL', "Install Event Calendar");
+define('EC_UNINSTALL', "Uninstall Event Calendar");
+define('EC_LAN_TODAY', "today");
+
+define('EC_LAN_DAY_1', "1");
+define('EC_LAN_DAY_2', "2");
+define('EC_LAN_DAY_3', "3");
+define('EC_LAN_DAY_4', "4");
+define('EC_LAN_DAY_5', "5");
+define('EC_LAN_DAY_6', "6");
+define('EC_LAN_DAY_7', "7");
+define('EC_LAN_DAY_8', "8");
+define('EC_LAN_DAY_9', "9");
+define('EC_LAN_DAY_10', "10");
+define('EC_LAN_DAY_11', "11");
+define('EC_LAN_DAY_12', "12");
+define('EC_LAN_DAY_13', "13");
+define('EC_LAN_DAY_14', "14");
+define('EC_LAN_DAY_15', "15");
+define('EC_LAN_DAY_16', "16");
+define('EC_LAN_DAY_17', "17");
+define('EC_LAN_DAY_18', "18");
+define('EC_LAN_DAY_19', "19");
+define('EC_LAN_DAY_20', "20");
+define('EC_LAN_DAY_21', "21");
+define('EC_LAN_DAY_22', "22");
+define('EC_LAN_DAY_23', "23");
+define('EC_LAN_DAY_24', "24");
+define('EC_LAN_DAY_25', "25");
+define('EC_LAN_DAY_26', "26");
+define('EC_LAN_DAY_27', "27");
+define('EC_LAN_DAY_28', "28");
+define('EC_LAN_DAY_29', "29");
+define('EC_LAN_DAY_30', "30");
+define('EC_LAN_DAY_31', "31");
+
+define('EC_LAN_0', "January");
+define('EC_LAN_1', "February");
+define('EC_LAN_2', "March");
+define('EC_LAN_3', "April");
+define('EC_LAN_4', "May");
+define('EC_LAN_5', "June");
+define('EC_LAN_6', "July");
+define('EC_LAN_7', "August");
+define('EC_LAN_8', "September");
+define('EC_LAN_9', "October");
+define('EC_LAN_10', "November");
+define('EC_LAN_11', "December");
+define('EC_LAN_JAN', "Jan");
+define('EC_LAN_FEB', "Feb");
+define('EC_LAN_MAR', "Mar");
+define('EC_LAN_APR', "Apr");
+define('EC_LAN_MAY', "May");
+define('EC_LAN_JUN', "Jun");
+define('EC_LAN_JUL', "Jul");
+define('EC_LAN_AUG', "Aug");
+define('EC_LAN_SEP', "Sep");
+define('EC_LAN_OCT', "Oct");
+define('EC_LAN_NOV', "Nov");
+define('EC_LAN_DEC', "Dec");
+define('EC_LAN_12', "Monday");
+define('EC_LAN_13', "Tuesday");
+define('EC_LAN_14', "Wednesday");
+define('EC_LAN_15', "Thursday");
+define('EC_LAN_16', "Friday");
+define('EC_LAN_17', "Saturday");
+define('EC_LAN_18', "Sunday");
+define('EC_LAN_19', "Mon");
+define('EC_LAN_20', "Tue");
+define('EC_LAN_21', "Wed");
+define('EC_LAN_22', "Thu");
+define('EC_LAN_23', "Fri");
+define('EC_LAN_24', "Sat");
+define('EC_LAN_25', "Sun");
+define('EC_LAN_26', "Events this Month");
+define('EC_LAN_27', "No events for this month.");
+define('EC_LAN_28', "Enter New Event");
+define('EC_LAN_29', "When:");
+define('EC_LAN_30', "Category:");
+define('EC_LAN_31', "Posted by:");
+define('EC_LAN_32', "Location:");
+define('EC_LAN_33', "Contact:");
+define('EC_LAN_34', "Jump to");
+define('EC_LAN_35', "Edit");
+define('EC_LAN_36', "Delete");
+define('EC_LAN_37', "None Listed.");
+define('EC_LAN_38', "Not specified");
+define('EC_LAN_39', "Click here for more information");
+define('EC_LAN_40', "Current Month");
+define('EC_LAN_41', "Total -NUM- individual events created");
+define('EC_LAN_42', "Event cannot end before it starts.");
+define('EC_LAN_43', "You left required field(s) blank.");
+define('EC_LAN_44', "New event created and entered into database.");
+define('EC_LAN_45', "Event updated in database.");
+define('EC_LAN_46', "Confirm Delete Event");
+define('EC_LAN_47', "Delete cancelled.");
+define('EC_LAN_48', "Please confirm you wish to delete this event - once deleted it cannot be retrieved");
+define('EC_LAN_49', "Cancel");
+define('EC_LAN_50', "Confirm Delete");
+define('EC_LAN_51', "Event deleted.");
+define('EC_LAN_52', "Event Category:");
+define('EC_LAN_53', "Create new category?:");
+define('EC_LAN_54', "Name:");
+define('EC_LAN_55', "Icon:");
+define('EC_LAN_56', "Create");
+define('EC_LAN_57', "Event:");
+define('EC_LAN_58', "source info URL:");
+define('EC_LAN_59', "Contact email:");
+define('EC_LAN_60', "Update Event");
+define('EC_LAN_61', "Go");
+define('EC_LAN_62', "Next -NUM- Events ...");
+define('EC_LAN_63', "Select repeating events between start and end dates. Start and end time as set");
+define('EC_LAN_64', "Check for an all-day event");
+define('EC_LAN_65', "Recurring:");
+define('EC_LAN_66', "Edit Event");
+define('EC_LAN_67', "Start:");
+define('EC_LAN_68', "All day event:");
+define('EC_LAN_69', "Ends:");
+define('EC_LAN_70', "Event Title:");
+define('EC_LAN_71', "Event Time:");
+define('EC_LAN_72', "Event Date:");
+define('EC_LAN_73', "End:");
+define('EC_LAN_74', "View Category");
+define('EC_LAN_75', "Calendar settings updated.");
+define('EC_LAN_76', "Events can be added by:");
+define('EC_LAN_77', "Update Settings");
+define('EC_LAN_78', "Calendar Settings");
+define('EC_LAN_79', "Calendar View");
+define('EC_LAN_80', "Event List");
+define('EC_LAN_81', "Configure Event Calendar");
+define('EC_LAN_82', "To activate please go to your menus screen and select the calendar_menu into one of your menu areas.");
+define('EC_LAN_83', "Calendar");
+define('EC_LAN_84', " from ");	
+define('EC_LAN_85', " until ");
+define('EC_LAN_86', "Individual events from entry");
+define('EC_LAN_87', "By checking this box you may generate a large number of individual events, which you will have to edit or delete individually if they are wrong");
+define('EC_LAN_88', "You have chosen to generate -NUM- individual events.");
+define('EC_LAN_89', "If the entry is wrong, you will have to edit or delete the entries individually");
+
+define('EC_LAN_90', "Choose");	
+define('EC_LAN_91', "Admin must define first");	
+define('EC_LAN_92', "View Category");		
+define('EC_LAN_93', "View Events List");		
+define('EC_LAN_94', "Enter New Event");			
+define('EC_LAN_95', "Today");	
+define('EC_LAN_96', "View Calendar");	
+define('EC_LAN_97', "All");		
+define('EC_LAN_98', "Required fields left blank");		
+define('EC_LAN_99', "Event must either be an all day event or finish after it starts");			
+define('EC_LAN_100', "Invalid Category Selection");			
+//define('EC_LAN_101', "Set to inactive to disable on the new event form.");	
+define('EC_LAN_102', "Show link to 'more information' with events");
+//define('EC_LAN_103', "On new event entry form.");	
+define('EC_LAN_104', "Calendar Administrator Class");		
+define('EC_LAN_105', "* Required Field");		
+define('EC_LAN_106', "Events");		
+define('EC_LAN_107', "This plugin is a fully featured event calendar with calendar menu.");		
+define('EC_LAN_108', "Event Calendar Upgraded.  See the e107 wiki for detailed information.");	
+define('EC_LAN_109', "Unable to delete this event.");	
+define('EC_LAN_110', "Event Number ");	
+define('EC_LAN_111', "All the events on ");	
+define('EC_LAN_112', "All the Events in ");	
+define('EC_LAN_113', "Event form already submitted.");
+define('EC_LAN_114', "Week starts with:");
+define('EC_LAN_115', "Sunday");
+define('EC_LAN_116', "Monday");
+define('EC_LAN_117', "Length of daynames (characters)");
+define('EC_LAN_118', "Date format in calendar header:");
+define('EC_LAN_119', "month/year");
+define('EC_LAN_120', "year/month");
+define('EC_LAN_121', "Show Calendar");	
+//define('EC_LAN_122', "Css element to show events on this day (menu)");	
+define('EC_LAN_123', "Subscriptions");
+define('EC_LAN_124', "Calendar Subscriptions");
+define('EC_LAN_125', "Categories available for subscription");
+define('EC_LAN_126', "Subscribed");
+define('EC_LAN_127', "Category");
+define('EC_LAN_128', "No categories available to subscribe to");
+define('EC_LAN_129', "Update");
+define('EC_LAN_130', "Subscriptions updated");
+define('EC_LAN_131', "Return");
+define('EC_LAN_132', "Expand details");
+define('EC_LAN_133', "[read more]");
+define('EC_LAN_134', "You have to provide a category name");
+define('EC_LAN_135', "Event");
+define('EC_LAN_136', "Category Description");
+define('EC_LAN_137', "Future Events");
+define('EC_LAN_138', '---End of List---');
+
+define('EC_LAN_140', "Forthcoming Events");
+define('EC_LAN_141', "No forthcoming events");
+define('EC_LAN_142', "Only registered and logged in users can subscribe to events");
+define('EC_LAN_143', "Facility not available");
+define('EC_LAN_144', " at ");
+
+define('EC_LAN_145', "You must specify a category for the event");
+define('EC_LAN_146', "Advance notice of calendar event");
+define('EC_LAN_147', "Calendar event today or tomorrow");
+define('EC_LAN_148', "No events in specified date range");
+define('EC_LAN_149', "Invalid date format");
+define('EC_LAN_150', "Enter start and end date for list");
+define('EC_LAN_151', "End date after start date");
+define('EC_LAN_152', "Maximum one year's events");
+define('EC_LAN_153', "Start Date (first day of): ");
+define('EC_LAN_154', "End Date (last day of): ");
+define('EC_LAN_155', "Category: ");
+define('EC_LAN_156', "Create List");
+define('EC_LAN_157', "Layout Options:");
+define('EC_LAN_158', "Output: ");
+define('EC_LAN_159', "Display ");
+define('EC_LAN_160', "Print ");
+define('EC_LAN_161', "PDF ");
+define('EC_LAN_162', "Print this page");
+define('EC_LAN_163', "Event Listing");
+define('EC_LAN_164', "Printable Lists");
+define('EC_LAN_165', "Default Listing");
+define('EC_LAN_166', "Tabular List no lines");
+define('EC_LAN_167', "Tabular List with lines");
+define('EC_LAN_168', "From: ");
+define('EC_LAN_169', "To: ");
+define('EC_LAN_170', "Printed on: ");
+define('EC_LAN_171', "List including category");
+define('EC_LAN_172', "Event Categories: ");
+define('EC_LAN_173', "First event starts: ");
+define('EC_LAN_174', "Last event ends: ");
+define('EC_LAN_175', "All Day");
+define('EC_LAN_176', "Recurring pattern: ");
+define('EC_LAN_177', "Cancel Entry");
+define('EC_LAN_178', "Accept Entries");
+define('EC_LAN_179', "Confirmation of multiple event entry");
+define('EC_LAN_180', " RECORDS NOT SAVED - DB UPDATE ERROR");
+
+define('EC_LAN_VIEWCALENDAR', "View Calendar");
+define('EC_LAN_VIEWALLEVENTS', "View all events");
+define('EC_LAN_ALLEVENTS', "All events");
+
+define('EC_ADLAN_A10', "Configuration");
+define('EC_ADLAN_A11', "Categories");
+define('EC_ADLAN_A12', "Calendar");
+define('EC_ADLAN_A13', "Edit");
+define('EC_ADLAN_A14', "New");
+define('EC_ADLAN_A15', "Delete");
+define('EC_ADLAN_A16', "Confirm");
+define('EC_ADLAN_A17', "Proceed");
+define('EC_ADLAN_A18', "Action");
+define('EC_ADLAN_A19', "Administer Categories");
+define('EC_ADLAN_A20', "Calendar Categories");
+define('EC_ADLAN_A21', "Category name");
+
+define('EC_ADLAN_A23', "Create category");
+define('EC_ADLAN_A24', "Edit category");
+define('EC_ADLAN_A25', "Save");
+define('EC_ADLAN_A26', "Category created");
+define('EC_ADLAN_A27', "Unable to create category");
+define('EC_ADLAN_A28', "Changes Saved");
+define('EC_ADLAN_A29', "Unable to save changes");
+
+define('EC_ADLAN_A30', "Category Deleted");
+define('EC_ADLAN_A31', "Tick the confirm box to delete");
+define('EC_ADLAN_A32', "Unable to delete this category");
+define('EC_ADLAN_A33', "None defined");
+define('EC_ADLAN_A34', "Calendar Administrator Class");
+//define('EC_ADLAN_A35', "");
+define('EC_ADLAN_A59', "Category is in use. Can not delete.");
+
+define('EC_ADLAN_A80', "Visible to");
+define('EC_ADLAN_A81', "Allow subscription");
+define('EC_ADLAN_A82', "Forced notification class");
+define('EC_ADLAN_A83', "Days ahead to notify of event");
+define('EC_ADLAN_A84', "Advanced message");
+define('EC_ADLAN_A85', "Message on the day");
+define('EC_ADLAN_A86', "Send email");
+define('EC_ADLAN_A87', "None");
+define('EC_ADLAN_A88', "Only advanced");
+define('EC_ADLAN_A89', "Only on the day");
+define('EC_ADLAN_A90', "Advanced and on the day");
+define('EC_ADLAN_A91', "Email Subject");
+define('EC_ADLAN_A92', "Email from (name)");
+define('EC_ADLAN_A93', "Email from email address");
+define('EC_ADLAN_A94', "Add new event class");
+define('EC_ADLAN_A95', "Enable manual subscriptions");
+define('EC_ADLAN_A96', "Disabling this removes the subscriptions button and overrides the category manual subscription setting.");
+//define('EC_ADLAN_A97', "If set to force subscriptions this category will not be displayed in the available subscription list for the user.");
+
+define('EC_ADLAN_A100', "Forthcoming Events");
+define('EC_ADLAN_A101', "Days to look forward:");
+define('EC_ADLAN_A102', "Number of events to display:");
+define('EC_ADLAN_A103', "Include recurring events:");
+define('EC_ADLAN_A104', "Title is link to events list:");
+define('EC_ADLAN_A105', "Configure Forthcoming Events Menu");
+define('EC_ADLAN_A106', "Menu has to be enabled on the 'Menu' page");
+define('EC_ADLAN_A107', "Hide menu if no events to show");
+define('EC_ADLAN_A108', "Menu Heading");
+define('EC_ADLAN_A109', "Forthcoming Events preferences updated");
+
+define('EC_ADLAN_A110', "Only on previous day");
+define('EC_ADLAN_A111', "Advanced and previous day");
+define('EC_ADLAN_A112', "Previous day and on the day");
+define('EC_ADLAN_A113', "Advanced, previous day and on the day");
+
+define('EC_ADLAN_A114', "Logging of Emails");
+define('EC_ADLAN_A115', "Summary");
+define('EC_ADLAN_A116', "Detailed");
+define('EC_ADLAN_A117', "Message on the day or the previous day");
+define('EC_ADLAN_A118', "Categories to display");
+define('EC_ADLAN_A119', "No categories defined, or error reading database");
+define('EC_ADLAN_A120', "Show category icon in menu");
+define('EC_ADLAN_A121', "Category Description");
+define('EC_ADLAN_A122', "Calendar time reference");
+define('EC_ADLAN_A123', "Calendar time format");
+define('EC_ADLAN_A124', "Current server time: ");
+define('EC_ADLAN_A125', "Current site time: ");
+define('EC_ADLAN_A126', "Current user time: ");
+define('EC_ADLAN_A127', "Determines time display format throughout event calendar.");
+define('EC_ADLAN_A128', "Custom time uses the format in the box on the right");
+define('EC_ADLAN_A129', '"Site Time" uses the offset defined in preferences');
+define('EC_ADLAN_A130', "Event name is link to:");
+define('EC_ADLAN_A131', "Calendar Event");
+define('EC_ADLAN_A132', "Source Info URL");
+define('EC_ADLAN_A133', "Date format for event entry: ");
+define('EC_ADLAN_A134', "Level of logging to main admin log:");
+define('EC_ADLAN_A135', "Edit/delete");
+define('EC_ADLAN_A136', "All changes");
+define('EC_ADLAN_A137', "Can cover additions, updates to and deletions from the event list");
+define('EC_ADLAN_A138', "Event start/end times on 5-minute boundaries");
+define('EC_ADLAN_A139', "(Reduces number of entries in drop-down list)");
+define('EC_ADLAN_A140', "Show number of events for this month in Calendar Menu");
+define('EC_ADLAN_A141', "Maintenance");
+define('EC_ADLAN_A142', "Remove past events ending more than x months ago");
+define('EC_ADLAN_A143', "timed from beginning of current month");
+define('EC_ADLAN_A144', "Event Calendar Maintenance");
+define('EC_ADLAN_A145', "Delete old entries");
+define('EC_ADLAN_A146', "Events older than ");
+define('EC_ADLAN_A147', " deleted");
+define('EC_ADLAN_A148', "Parameter error - nothing deleted");
+define('EC_ADLAN_A149', "No old events to delete, or delete of past events failed");
+define('EC_ADLAN_A150', "Confirm delete events older than ");
+
+define('EC_ADLAN_A151', "e107 Web Site");
+define('EC_ADLAN_A152', "calendar@yoursite.com");
+define('EC_ADLAN_A153', "Log directory must be created manually - create a subdirectory 'log' off your event calendar plugin directory, with '666' access rights");
+define('EC_ADLAN_A154', "Could not change log directory permissions");
+define('EC_ADLAN_A155', "Log directory permissions may require manual update to 0666 or 0766, although depending on your server setup they may work");
+define('EC_ADLAN_A156', "Database upgraded");
+define('EC_ADLAN_A157', "this is the rss feed for the calendar entries");
+define('EC_ADLAN_A158', "Could not create log directory");
+
+define('EC_ADLAN_A159', "Cache Management");
+define('EC_ADLAN_A160', "(Only relevant if cache enabled)");
+define('EC_ADLAN_A161', "Empty Calendar Cache");
+define('EC_ADLAN_A162', "Confirm Empty Cache");
+define('EC_ADLAN_A163', "Cache emptied");
+
+define('EC_ADLAN_A164', "Update completed");
+define('EC_ADLAN_A165', "Calendar menu header links to:");
+define('EC_ADLAN_A166', "Date display in Event List:");
+define('EC_ADLAN_A167', "Date display in Forthcoming Events:");
+define('EC_ADLAN_A168', "Custom date uses the format in the box on the right");
+define('EC_ADLAN_A169', "Determines date display format for event listings");
+define('EC_ADLAN_A170', "Determines date display format for forthcoming events menu");
+define('EC_ADLAN_A171', "Flag recently added/updated events");
+define('EC_ADLAN_A172', "Value is time from update in hours; zero to disable, 'LV' to show from user's last visit");
+
+define('EC_ADLAN_A173', "Subscriptions");
+define('EC_ADLAN_A174', "No subscription entries found");
+define('EC_ADLAN_A175', "UID");
+define('EC_ADLAN_A176', "User Name");
+define('EC_ADLAN_A177', "Category");
+define('EC_ADLAN_A178', "Problems");
+define('EC_ADLAN_A179', "Actions");
+define('EC_ADLAN_A180', "Deleted subscription record no ");
+define('EC_ADLAN_A181', "Delete failed for record no ");
+define('EC_ADLAN_A182', "Total --NUM-- entries in database");
+define('EC_ADLAN_A183', "Calendar Menu mouseover shows event title");
+define('EC_ADLAN_A184', "may not work with all browsers");
+define('EC_ADLAN_A185', "Nothing");
+define('EC_ADLAN_A186', "Update settings\nand send test\nemail to self");
+define('EC_ADLAN_A187', "Test email sent - ");
+define('EC_ADLAN_A188', "Error sending test email - ");
+define('EC_ADLAN_A189', "If the message is left blank, the message from the 'Default' category will be used");
+define('EC_ADLAN_A190', "Default category - mailout messages are used if none defined for any other category");
+define('EC_ADLAN_A191', "Details of event for test email");
+define('EC_ADLAN_A192', "Test event location");
+define('EC_ADLAN_A193', "Allow users to display/print/PDF lists");
+define('EC_ADLAN_A194', "None");
+define('EC_ADLAN_A195', "Display/Print");
+define('EC_ADLAN_A196', "Display/Print/PDF");
+define('EC_ADLAN_A197', "No class membership");
+define('EC_ADLAN_A198', "Invalid User");
+define('EC_ADLAN_A199', "Show 'recent' icon");
+define('EC_ADLAN_A200', "Editor for events");
+define('EC_ADLAN_A201', "BBCode (Standard)");
+define('EC_ADLAN_A202', "BBCode with help");
+define('EC_ADLAN_A203', "WYSIWYG");
+define('EC_ADLAN_A204', "");
+define('EC_ADLAN_A205', "");
+
+
+// Prefs - language defines can be used in various places where text is set through the admin screens
+define('EC_MAILOUT_SUBJECT', 'Advice of calendar event');	// Use shortcode EC_MAIL_SUBJECT
+
+
 ?>
\ No newline at end of file
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/next_event_menu.php 1.0.4.src/e107_plugins/calendar_menu/next_event_menu.php
--- 1.0.2.src/e107_plugins/calendar_menu/next_event_menu.php	2013-10-11 14:02:27.347000028 -0500
+++ 1.0.4.src/e107_plugins/calendar_menu/next_event_menu.php	2013-09-26 16:49:50.000000000 -0500
@@ -1,153 +1,96 @@
-<?php
-/*
-+ ----------------------------------------------------------------------------+
-|     e107 website system
-|
-|     Copyright (C) 2001-2002 Steve Dunstan (jalist@e107.org)
-|     Copyright (C) 2008-2010 e107 Inc (e107.org)
-|
-|
-|     Released under the terms and conditions of the
-|     GNU General Public License (http://gnu.org).
-|
-|     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/next_event_menu.php $
-|     $Revision: 11678 $
-|     $Id: next_event_menu.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
-|
-| 09.11.06 - Cache support added, templating/shortcode tweaks
-+----------------------------------------------------------------------------+
-*/
-
-
-if (!defined('e107_INIT')) { exit; }
-
-global $ecal_dir, $tp;
-$ecal_dir	= e_PLUGIN . "calendar_menu/";
-
-global $ecal_class;
-require_once($ecal_dir."ecal_class.php");
-$ecal_class = new ecal_class;
-
-	$cache_tag = "nq_event_cal_next";
-
-// See if the page is already in the cache
-	if($cacheData = $e107cache->retrieve($cache_tag, $ecal_class->max_cache_time))
-	{
-		echo $cacheData;
-		return;
-	}
-
-include_lan(e_PLUGIN."calendar_menu/languages/".e_LANGUAGE.".php");
-
-// Values defined through admin pages
-$menu_title = $pref['eventpost_menuheading'];
-$days_ahead = $pref['eventpost_daysforward'];
-$show_count = $pref['eventpost_numevents'];
-$show_recurring = $pref['eventpost_checkrecur'];
-$link_in_heading = $pref['eventpost_linkheader'];
-
-// Now set defaults for anything not defined
-if (!$menu_title) $menu_title = EC_LAN_140;
-if (!$days_ahead) $days_ahead = 30;		// Number of days ahead to go
-if (!$show_count) $show_count = 3;		// Number of events to show
-if (!$show_recurring) $show_recurring = 1;	// Zero to exclude recurring events
-if (!$link_in_heading) $link_in_heading = 0;	// Zero for simple heading, 1 to have clickable link
-
-
-require($ecal_dir."calendar_shortcodes.php");
-if (is_readable(THEME."calendar_template.php")) 
-{  // Needs to be require in case second
-  require(THEME."calendar_template.php");
-}
-else 
-{
-  require($ecal_dir."calendar_template.php");
-}
-
-$site_time = $ecal_class->cal_timedate;
-$end_time = $site_time + (86400 * $days_ahead);
-
-
-// Build up query bit by bit
-    $cal_qry = "SELECT e.event_id, e.event_rec_m, e.event_rec_y, e.event_start, e.event_thread, e.event_title, e.event_recurring, e.event_allday, ec.*
-	FROM #event as e LEFT JOIN #event_cat as ec ON e.event_category = ec.event_cat_id
-	WHERE (((e.event_start >= {$site_time} AND e.event_start < {$end_time}))";
-
-if ($show_recurring > 0)
-{  // This won't work properly under some circumstances if $days_ahead is greater than the number of days in the current month plus next month.
-   // If that matters, need another test on event_rec_y (which is actually the month) - plus the calculation to generate the values
-	$cal_datearray		= $ecal_class->cal_date;
-	$first_day			= $cal_datearray['mday'];
-	$first_month		= $cal_datearray['mon'];
-
-	$end_date	= mktime(0,0,0,$first_month,$first_day,0) + (86400 * $days_ahead);
-	$end_datearray = getdate($end_date);
-	$last_month = $end_datearray['mon'];
-	$last_day	= $end_datearray['mday'];
-	$cal_qry .= " OR ((e.event_recurring = '1') 
-				 AND ";
-	if ($first_month == $last_month)
-	{   // All dates within current month
-	  $cal_qry .= "(((e.event_rec_y = {$first_month})    
-	             AND  (e.event_rec_m >= {$first_day}) AND (e.event_rec_m < {$last_day})  ) ))";
-	}
-	else
-	{	// Dates overlap one or more months
-	$cal_qry .= "(((e.event_rec_y = {$first_month})    AND  (e.event_rec_m >= {$first_day})) 
-				  OR ((e.event_rec_y  = {$last_month}) AND  (e.event_rec_m < {$last_day}))";
-	$first_month++;
-	if ($first_month > 12) $first_month = 1;
-	if ($first_month <> $last_month)
-	{  // Add a whole month in the middle
-	  $cal_qry .= " OR (e.event_rec_y = {$first_month}) ";
-	}
-	$cal_qry .= "))";
-	}
-}
-
-$cal_qry .= ')'.$ecal_class->extra_query;	   // Puts in class filter if not calendar admin
-
-if (isset($pref['eventpost_fe_set']))
-{
-   $cal_qry .= " AND find_in_set(ec.event_cat_id,'".$pref['eventpost_fe_set']."')";
-}
-	
-$cal_qry .= " order by e.event_start LIMIT {$show_count}";
-
-
-$cal_totev = 0;
-$cal_text = '';
-$cal_row = array();
-global $cal_row, $cal_totev;
-
-$cal_totev = $sql->db_Select_gen($cal_qry);
-
-
-if ($cal_totev > 0)
-{
-    while ($cal_row = $sql->db_Fetch())
-    {
-	  $cal_totev --;    // Can use this to modify inter-event gap
-	  $cal_text .= $tp->parseTemplate($EVENT_CAL_FE_LINE,FALSE,$calendar_shortcodes);
-	}
-}
-else
-{
-  $cal_text.= EC_LAN_141;
-}
-
-$calendar_title = $menu_title;
-if ($link_in_heading == 1)
-{
-  $calendar_title = "<a class='forumlink' href='" . e_PLUGIN . "calendar_menu/event.php' >" . $menu_title . "</a>";
-}
-
-// Now handle the data, cache as well
-ob_start();					// Set up a new output buffer
-$ns->tablerender($calendar_title, $cal_text, 'next_event_menu');
-$cache_data = ob_get_flush();			// Get the page content, and display it
-$e107cache->set($cache_tag, $cache_data);	// Save to cache
-	
-
+<?php
+/*
+ * e107 website system
+ *
+ * Copyright (C) 2002-2012 e107 Inc (e107.org)
+ * Released under the terms and conditions of the
+ * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
+ *
+ * Event calendar - forthcoming events menu
+ *
+ * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/next_event_menu.php $
+ * $Id: next_event_menu.php 13009 2012-10-27 15:19:55Z e107steved $
+ */
+
+
+if (!defined('e107_INIT')) { exit; }
+
+global $ecal_dir, $tp;
+$ecal_dir	= e_PLUGIN . "calendar_menu/";
+
+global $ecal_class;
+require_once($ecal_dir."ecal_class.php");
+if (!is_object($ecal_class)) $ecal_class = new ecal_class;
+
+	$cache_tag = "nq_event_cal_next";
+
+// See if the page is already in the cache
+	if($cacheData = $e107cache->retrieve($cache_tag, $ecal_class->max_cache_time))
+	{
+		echo $cacheData;
+		return;
+	}
+
+include_lan(e_PLUGIN."calendar_menu/languages/".e_LANGUAGE.".php");
+
+// Values defined through admin pages
+$menu_title = varset($pref['eventpost_menuheading'],EC_LAN_140);
+$days_ahead = varset($pref['eventpost_daysforward'],30);			// Number of days ahead to go
+$show_count = varset($pref['eventpost_numevents'],3);				// Number of events to show
+$show_recurring = varset($pref['eventpost_checkrecur'],1);			// Zero to exclude recurring events
+$link_in_heading = varset($pref['eventpost_linkheader'],0);			// Zero for simple heading, 1 to have clickable link
+
+
+require($ecal_dir."calendar_shortcodes.php");
+if (is_readable(THEME."calendar_template.php")) 
+{  // Needs to be require in case second
+  require(THEME."calendar_template.php");
+}
+else 
+{
+  require($ecal_dir."calendar_template.php");
+}
+
+$start_time = $ecal_class->cal_timedate;
+$end_time = $start_time + (86400 * $days_ahead) - 1;
+
+
+$cal_totev = 0;
+$cal_text = '';
+$cal_row = array();
+global $cal_row, $cal_totev;
+
+
+$ev_list = $ecal_class->get_n_events($show_count, $start_time, $end_time, varset($pref['eventpost_fe_set'],FALSE), $show_recurring, 
+						'event_id,event_start, event_thread, event_title, event_recurring, event_allday, event_category', 'event_cat_icon');
+
+$cal_totev = count($ev_list);
+if ($cal_totev > 0)
+{
+  foreach ($ev_list as $cal_row)
+  {
+    $cal_totev --;    // Can use this to modify inter-event gap
+    $cal_text .= $tp->parseTemplate($EVENT_CAL_FE_LINE,TRUE,$calendar_shortcodes);
+  }
+}
+else
+{
+  if ($pref['eventpost_fe_hideifnone']) return '';
+  $cal_text.= EC_LAN_141;
+}
+
+$calendar_title = $tp->toHTML($menu_title,FALSE,'TITLE');		// Allows multi-language title, shortcodes
+if ($link_in_heading == 1)
+{
+  $calendar_title = "<a class='forumlink' href='" . e_PLUGIN . "calendar_menu/event.php' >" . $calendar_title . "</a>";
+}
+
+// Now handle the data, cache as well
+ob_start();					// Set up a new output buffer
+$ns->tablerender($calendar_title, $cal_text, 'next_event_menu');
+$cache_data = ob_get_flush();			// Get the page content, and display it
+$e107cache->set($cache_tag, $cache_data);	// Save to cache
+
+unset($ev_list);	
+
 ?>
\ No newline at end of file
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/plugin.php 1.0.4.src/e107_plugins/calendar_menu/plugin.php
--- 1.0.2.src/e107_plugins/calendar_menu/plugin.php	2013-10-11 14:02:27.348000028 -0500
+++ 1.0.4.src/e107_plugins/calendar_menu/plugin.php	2013-09-26 16:49:50.000000000 -0500
@@ -1,280 +1,333 @@
-<?php
-/*
-+ ----------------------------------------------------------------------------+
-|     e107 website system
-|
-|     Copyright (C) 2001-2002 Steve Dunstan (jalist@e107.org)
-|     Copyright (C) 2008-2010 e107 Inc (e107.org)
-|
-|
-|     Released under the terms and conditions of the
-|     GNU General Public License (http://gnu.org).
-|
-|     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/plugin.php $
-|     $Revision: 12178 $ - with mods to hopefully trigger upgrade to new version
-|     $Id: plugin.php 12178 2011-05-02 20:45:40Z e107steved $
-|     $Author: e107steved $
-|
-| 22.07.06 - Mods for V3.6 upgrade, including log directory
-| 02.08.06 - Support for category icon display added
-| 29.09.06 - prefs, db field added for next batch of mods
-| 03.10.06 - forced subs fields changed
-| 04.10.06 - db field order changed to avoid confusing update routines
-| 29.10.06 - Language mods to reflect CVS update to V1.14
-| 10.11.06 - Mods for next release to CVS
-+----------------------------------------------------------------------------+
-*/
-
-if (!defined('e107_INIT')) { exit; }
-
-// Plugin info -------------------------------------------------------------------------------------------------------
-include_lan(e_PLUGIN."calendar_menu/languages/".e_LANGUAGE.".php");
-
-$eplug_name = 'EC_ADLAN_1';
-$eplug_version = "3.6";
-$eplug_author = "jalist / cameron / McFly / Barry / Lisa_ / steved";
-$eplug_url = "http://e107.org";
-$eplug_email = "jalist@e107.org";
-$eplug_description = EC_LAN_107;
-$eplug_compatible = "e107v7";
-$eplug_readme = "readme.pdf";
-// leave blank if no readme file
-$eplug_compliant = TRUE;
-
-// Name of the plugin's folder -------------------------------------------------------------------------------------
-$eplug_folder = "calendar_menu";
-
-// Name of menu item for plugin ----------------------------------------------------------------------------------
-$eplug_menu_name = "calendar_menu";
-
-// Name of the admin configuration file --------------------------------------------------------------------------
-$eplug_conffile = "admin_config.php";
-
-// Icon image and caption text ------------------------------------------------------------------------------------
-$eplug_icon = $eplug_folder."/images/calendar_32.png";
-$eplug_icon_small = $eplug_folder."/images/calendar_16.png";
-$eplug_caption = EC_LAN_81; // "Configure Event Calendar";
-
-$ecalSQL = new db;
-$ecalSQL->db_Select("plugin", "plugin_version", "plugin_path='calendar_menu' AND plugin_installflag > 0");
-list($ecalVer) = $ecalSQL->db_Fetch();
-$ecalVer = preg_replace("/[a-zA-z\s]/", '', $ecalVer);
-
-// List of preferences -----------------------------------------------------------------------------------------------
-$eplug_prefs = array(
-"eventpost_admin" => 254,			// Admin
-"eventpost_adminlog" => 0,
-"eventpost_showeventcount" => 1,
-"eventpost_forum" => 1,
-"eventpost_recentshow" => 0,
-"eventpost_super" => 254,			// Admin
-"eventpost_menulink" => 0,
-"eventpost_dateformat" => 1,
-"eventpost_fivemins" => 0,
-"eventpost_weekstart" => "sun",
-"eventpost_lenday" => 1,
-"eventpost_caltime" => 0,
-"eventpost_datedisplay" => 1,
-"eventpost_timedisplay" => 0,
-"eventpost_timecustom" => "%H%M",
-"eventpost_dateevent"  => 1,
-"eventpost_datenext"   => 1,
-"eventpost_eventdatecustom" => "%A %d %B %Y",
-"eventpost_nextdatecustom"   => "%d %b",
-"eventpost_mailsubject" => EC_ADLAN_A12,
-"eventpost_mailfrom" => EC_ADLAN_A151,
-"eventpost_mailaddress" => EC_ADLAN_A152,
-"eventpost_asubs" => 1,
-"eventpost_emaillog" => 1,
-"eventpost_menuheading" => EC_LAN_140,
-"eventpost_daysforward" => 30,
-"eventpost_numevents" => 3,
-"eventpost_checkrecur" => 1,
-"eventpost_linkheader" => 0,
-"eventpost_fe_set" => "",
-"eventpost_showcaticon" => 0,
-"eventpost_namelink" => 1 );
-
-// List of table names -----------------------------------------------------------------------------------------------
-$eplug_table_names = array("event","event_cat","event_subs" );
-
-// List of sql requests to create tables -----------------------------------------------------------------------------
-$eplug_tables = array(
-"CREATE TABLE ".MPREFIX."event (
-	event_id int(11) unsigned NOT NULL auto_increment,
-	event_start int(10) NOT NULL default '0',
-	event_end int(10) NOT NULL default '0',
-	event_allday tinyint(1) unsigned NOT NULL default '0',
-	event_recurring tinyint(1) unsigned NOT NULL default '0',
-	event_datestamp int(10) unsigned NOT NULL default '0',
-	event_title varchar(200) NOT NULL default '',
-	event_location text NOT NULL,
-	event_details text NOT NULL,
-	event_author varchar(100) NOT NULL default '',
-	event_contact varchar(200) NOT NULL default '',
-	event_category smallint(5) unsigned NOT NULL default '0',
-	event_thread varchar(100) NOT NULL default '',
-	event_rec_m tinyint(2) unsigned NOT NULL default '0',
-	event_rec_y tinyint(2) unsigned NOT NULL default '0',
-	PRIMARY KEY  (event_id)
-	) ENGINE=MyISAM;",
-	"CREATE TABLE ".MPREFIX."event_cat (
-	event_cat_id smallint(5) unsigned NOT NULL auto_increment,
-	event_cat_name varchar(100) NOT NULL default '',
-	event_cat_icon varchar(100) NOT NULL default '',
-	event_cat_class int(10) unsigned NOT NULL default '0',
-	event_cat_subs tinyint(3) unsigned NOT NULL default '0',
-	event_cat_ahead tinyint(3) unsigned NOT NULL default '0',
-	event_cat_msg1 text,
-	event_cat_msg2 text,
-	event_cat_notify  tinyint(3) unsigned NOT NULL default '0',
-	event_cat_last int(10) unsigned NOT NULL default '0',
-	event_cat_today int(10) unsigned NOT NULL default '0',
-	event_cat_lastupdate int(10) unsigned NOT NULL default '0',
-	event_cat_addclass int(10) unsigned NOT NULL default '0',
-	event_cat_description text,
-	event_cat_force_class int(10) unsigned NOT NULL default '0',
-	PRIMARY KEY  (event_cat_id)
-	) ENGINE=MyISAM;"
-	,
-	"CREATE TABLE ".MPREFIX."event_subs (
-	event_subid int(10) unsigned NOT NULL auto_increment,
-	event_userid  int(10) unsigned NOT NULL default '0',
-	event_cat  int(10) unsigned NOT NULL default '0',
-	PRIMARY KEY  (event_subid)
-	) ENGINE=MyISAM;");
-
-
-// Create a link in main menu (yes=TRUE, no=FALSE) -------------------------------------------------------------
-$ec_dir = e_PLUGIN."calendar_menu/";
-$eplug_link = TRUE;
-$eplug_link_name = EC_LAN_83; // "Calendar";
-$eplug_link_url = "".$ec_dir."calendar.php";
-$eplug_link_perms = "Everyone"; // Everyone, Guest, Member, Admin 
-
-
-// Text to display after plugin successfully installed ------------------------------------------------------------------
-$eplug_done = EC_LAN_82; // "To activate please go to your menus screen and select the calendar_menu into one of your menu areas.";
-
-
-
-// upgrading ... //
-$upgrade_add_prefs = "";
-$upgrade_remove_prefs = "";
-$upgrade_alter_tables = array();
-$version_notes = "";
-
-
-if (!function_exists('create_ec_log_dir'))
-{
-function create_ec_log_dir()
-{
-global $eplug_folder;
-
-$response = "";
-$cal_log_dir = e_PLUGIN.$eplug_folder.'/log';
-  if (!is_dir($cal_log_dir))
-  {  // Need to create log directory
-    if (!mkdir($cal_log_dir,0666))
-	{
-	  $response = EC_ADLAN_A158."<br />";
-	}
-  }
-  if (!is_dir($cal_log_dir))
-  {
-    $response .= EC_ADLAN_A153;
-	return $response;
-  }
-  
-// Now check directory permissions
-  if (!is_writable($cal_log_dir."/"))
-  {
-    if (!chmod($cal_log_dir,0666))
-	{
-	  $response = EC_ADLAN_A154."<br />";
-	}
-    if (!is_writable($cal_log_dir."/"))
-    {
-      $response .= EC_ADLAN_A155;
-    }
-  }
-  return $response;
-}
-}
-
-
-if ($ecalVer < 3.5)
-{
-// To version 3.5
-
-$upgrade_alter_tables = array(
-"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_class int(10) unsigned NOT NULL default '0'",
-"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_subs tinyint(3) unsigned NOT NULL default '0'",
-"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_force tinyint(3) unsigned NOT NULL default '0'",
-"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_ahead tinyint(3) unsigned NOT NULL default '0'",
-"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_msg1 text",
-"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_msg2 text",
-"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_notify  tinyint(3) unsigned NOT NULL default '0'",
-"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_last int(10) unsigned NOT NULL default '0'",
-"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_today int(10) unsigned NOT NULL default '0'",
-"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_lastupdate int(10) unsigned NOT NULL default '0'",
-"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_addclass int(10) unsigned NOT NULL default '0'",
-"CREATE TABLE ".MPREFIX."event_subs (
-	event_subid int(10) unsigned NOT NULL auto_increment,
-	event_userid  int(10) unsigned NOT NULL default '0',
-	event_cat  int(10) unsigned NOT NULL default '0',
-	PRIMARY KEY  (event_subid)
-	) ENGINE=MyISAM;"
-);
-$version_notes .= "<u>3.5</u><br />".EC_ADLAN_A156."<br />";
-}
-// To version 3.6 - fair number of tweaks overall
-if ($ecalVer < 3.6)
-{
-$upgrade_alter_tables = array(
-"ALTER TABLE ".MPREFIX."event_cat DROP event_cat_force",
-"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_description text",
-"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_force_class int(10) unsigned NOT NULL default '0'"
-);
-  $verprefs = array(
-	"eventpost_adminlog" => 0,
-	"eventpost_showeventcount" => 1,
-	"eventpost_menuheading" => EC_LAN_140,
-	"eventpost_daysforward" => 30,
-	"eventpost_numevents" => 3,
-	"eventpost_checkrecur" => 1,
-	"eventpost_linkheader" => 0,
-	"eventpost_showcaticon" => 0,
-	"eventpost_dateformat" => 1,
-	"eventpost_fivemins" => 0,
-	"eventpost_emaillog" => 1,
-	"eventpost_caltime" => 0,
-	"eventpost_datedisplay" => 1,
-	"eventpost_timedisplay" => 0,
-	"eventpost_timecustom" => "%H%M",
-	"eventpost_fe_set" => "",
-	"eventpost_namelink" => 1,
-	"eventpost_recentshow" => 0,
-	"eventpost_dateevent"  => 1,
-	"eventpost_datenext"   => 1,
-	"eventpost_eventdatecustom" => "&A %d %B %Y",
-	"eventpost_nextdatecustom"   => "%d %b",
-    "eventpost_menulink" => 0 );
-	$upgrade_add_prefs .= $verprefs;
-	$version_notes .= "<u>3.6</u><br />".EC_ADLAN_A156."<br />".create_ec_log_dir()."<br />
-	                   <a href='".e_PLUGIN_ABS.$eplug_folder."/".$eplug_conffile."'>Configure</a><br />";
-					   
-  $upgrade_remove_prefs = array(
-    "eventpost_addcat",
-	"eventpost_evtoday",
-	"eventpost_headercss",
-	"eventpost_daycss",
-	"eventpost_todaycss"
-	);
-}
-
-
-$eplug_upgrade_done = EC_LAN_108."<br />".$version_notes;
-
-
+<?php
+/*
+ * e107 website system
+ *
+ * Copyright (C) 2002-2013 e107 Inc (e107.org)
+ * Released under the terms and conditions of the
+ * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
+ *
+ * Event calendar - install definitions etc
+ *
+ * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/plugin.php $
+ * $Id: plugin.php 13101 2013-04-19 22:46:47Z e107moc $
+ */
+
+if (!defined('e107_INIT')) { exit; }
+
+// Plugin info
+// -----------
+include_lan(e_PLUGIN."calendar_menu/languages/".e_LANGUAGE.".php");
+$eplug_name = 'EC_ADLAN_1';
+$eplug_version = "3.70";
+$eplug_author = "jalist / cameron / McFly / Barry / Lisa_ / steved";
+$eplug_url = "http://e107.org";
+$eplug_email = "e107@e107.org";
+$eplug_description = EC_LAN_107;
+$eplug_compatible = "e107v7";
+//$eplug_readme = "readme.pdf";
+$eplug_compliant = TRUE;
+$eplug_folder = "calendar_menu";		// Name of the plugin's folder
+
+$eplug_menu_name = "calendar_menu";		// Name of menu item for plugin
+$eplug_conffile = "admin_config.php";	// Name of the admin configuration file
+
+$eplug_icon = $eplug_folder."/images/calendar_32.png";			// 32x32 icon
+$eplug_icon_small = $eplug_folder."/images/calendar_16.png";	// 16x16 icon
+$eplug_caption = EC_LAN_81; 									// Admin caption
+
+
+//---------------------------------------
+//	Get version of installed plugin
+//---------------------------------------
+// If there's the potential for install/uninstall/upgrade, $plug is always set.
+// Otherwise we're just being scanned for some info - don't execute anything
+  $ec_mode = 'scan';
+  $ecal_ver = $eplug_version;
+  if (isset($plug))
+  {
+	if (isset($plug['plug_action']))
+	{
+	  $ec_mode = $plug['plug_action'];		// Definitive answer
+	}
+	elseif ($plug['plugin_installflag'])
+	{  // Potential upgrade - we're installed
+	  $ecal_ver = $plug['plugin_version'];
+	  $ec_mode = 'upgrade';
+	}
+	else
+	{  // Potential install
+	  $ec_mode = 'install';
+	}
+  }
+  elseif (isset($pref['plug_installed'][$eplug_folder])) 
+  {		// Potential upgrade - we're installed. But more likely just a scan
+    $ecal_ver = $pref['plug_installed'][$eplug_folder];
+	$ec_mode = 'upgrade';
+  }
+if (($ec_mode == 'upgrade') && ($ecal_ver == $eplug_version)) $ec_mode = 'scan';		// Nothing to do if version up to date
+
+list($$ecal_ver_num,$ecal_ver_alpha) = explode(" ", $ecal_ver);
+$ecal_ver_num = intval((100*$ecal_ver_num) + 0.1);						// Pull out numeric version as integer
+$ecal_ver_alpha = trim($ecal_ver_alpha);								// Release candidate etc
+
+//echo "Calendar Version: ".$ecal_ver."  Numeric: ".$ecal_ver_num."  Alpha: ".$ecal_ver_alpha."  Mode: ".$ec_mode."<br />";
+
+
+// Work out query to insert default category here, so we only have to modify one place.
+require_once('ecal_class.php');	// Gets the define for the 'Default' category
+$ec_insert_entries = "INSERT INTO ".MPREFIX."event_cat (event_cat_name, event_cat_description, event_cat_ahead, event_cat_msg1, event_cat_msg2, event_cat_lastupdate)
+ VALUES ('".EC_DEFAULT_CATEGORY."', '".EC_ADLAN_A190."', 5,
+'Forthcoming event:\n\n{EC_MAIL_CATEGORY}\n\n{EC_MAIL_TITLE} on {EC_MAIL_HEADING_DATE}{EC_MAIL_TIME_START}\n\n".
+"{EC_MAIL_DETAILS}\n\nFor further details: {EC_EVENT_LINK=Click Here}\n\nor {EC_MAIL_CONTACT} for further information.', ". 
+"'Calendar event imminent:\n\n{EC_MAIL_CATEGORY}\n\n{EC_MAIL_TITLE} on {EC_MAIL_HEADING_DATE}{EC_MAIL_TIME_START}\n\n{EC_MAIL_DETAILS}\n\n".
+"For further details see the calendar entry on the web site:\n{EC_MAIL_LINK=Click Here}\n\n {EC_MAIL_CONTACT} for further details', 
+'".intval(time())."') ";
+
+// List of preferences
+// -------------------
+$eplug_prefs = array(
+"eventpost_admin" => 254,			// Admin
+"eventpost_adminlog" => 0,
+"eventpost_showeventcount" => 1,
+"eventpost_showmouseover" => 0,
+"eventpost_forum" => 1,
+"eventpost_recentshow" => 0,
+"eventpost_super" => 254,			// Admin
+"eventpost_menulink" => 0,
+"eventpost_dateformat" => 1,
+"eventpost_fivemins" => 0,
+"eventpost_weekstart" => "sun",
+"eventpost_lenday" => 1,
+"eventpost_caltime" => 0,
+"eventpost_datedisplay" => 1,
+"eventpost_timedisplay" => 0,
+"eventpost_timecustom" => "%H%M",
+"eventpost_dateevent"  => 1,
+"eventpost_datenext"   => 1,
+"eventpost_eventdatecustom" => "%A %d %B %Y",
+"eventpost_nextdatecustom"   => "%d %b",
+"eventpost_mailsubject" => EC_ADLAN_A12." - {EC_MAIL_TITLE}",
+"eventpost_mailfrom" => EC_ADLAN_A151,
+"eventpost_mailaddress" => EC_ADLAN_A152,
+"eventpost_asubs" => 1,
+"eventpost_emaillog" => 1,
+"eventpost_menuheading" => EC_LAN_140,
+"eventpost_daysforward" => 30,
+"eventpost_numevents" => 3,
+"eventpost_checkrecur" => 1,
+"eventpost_linkheader" => 0,
+"eventpost_fe_set" => '',
+"eventpost_fe_hideifnone" => '0',
+"eventpost_fe_showrecent" => 0,
+"eventpost_showcaticon" => 0,
+"eventpost_printlists" => 1,
+"eventpost_namelink" => 1 );
+
+
+// List of table names 
+//--------------------
+$eplug_table_names = array("event","event_cat","event_subs" );
+
+
+// List of sql requests to create tables 
+//--------------------------------------
+$eplug_tables = array(
+"CREATE TABLE ".MPREFIX."event (
+	event_id int(11) unsigned NOT NULL auto_increment,
+	event_start int(10) NOT NULL default '0',
+	event_end int(10) NOT NULL default '0',
+	event_allday tinyint(1) unsigned NOT NULL default '0',
+	event_recurring tinyint(1) unsigned NOT NULL default '0',
+	event_datestamp int(10) unsigned NOT NULL default '0',
+	event_title varchar(200) NOT NULL default '',
+	event_location text NOT NULL,
+	event_details text NOT NULL,
+	event_author varchar(100) NOT NULL default '',
+	event_contact varchar(200) NOT NULL default '',
+	event_category smallint(5) unsigned NOT NULL default '0',
+	event_thread varchar(100) NOT NULL default '',
+	event_rec_m tinyint(2) unsigned NOT NULL default '0',
+	event_rec_y tinyint(2) unsigned NOT NULL default '0',
+	PRIMARY KEY  (event_id)
+	) ENGINE=MyISAM;",
+	"CREATE TABLE ".MPREFIX."event_cat (
+	event_cat_id smallint(5) unsigned NOT NULL auto_increment,
+	event_cat_name varchar(100) NOT NULL default '',
+	event_cat_icon varchar(100) NOT NULL default '',
+	event_cat_class int(10) unsigned NOT NULL default '0',
+	event_cat_subs tinyint(3) unsigned NOT NULL default '0',
+	event_cat_ahead tinyint(3) unsigned NOT NULL default '0',
+	event_cat_msg1 text,
+	event_cat_msg2 text,
+	event_cat_notify  tinyint(3) unsigned NOT NULL default '0',
+	event_cat_last int(10) unsigned NOT NULL default '0',
+	event_cat_today int(10) unsigned NOT NULL default '0',
+	event_cat_lastupdate int(10) unsigned NOT NULL default '0',
+	event_cat_addclass int(10) unsigned NOT NULL default '0',
+	event_cat_description text,
+	event_cat_force_class int(10) unsigned NOT NULL default '0',
+	PRIMARY KEY  (event_cat_id)
+	) ENGINE=MyISAM;"
+	,
+	"CREATE TABLE ".MPREFIX."event_subs (
+	event_subid int(10) unsigned NOT NULL auto_increment,
+	event_userid  int(10) unsigned NOT NULL default '0',
+	event_cat  int(10) unsigned NOT NULL default '0',
+	PRIMARY KEY  (event_subid)
+	) ENGINE=MyISAM;", $ec_insert_entries);
+
+
+// Create a link in main menu (yes=TRUE, no=FALSE) 
+//---------------------------
+$ec_dir = e_PLUGIN."calendar_menu/";
+$eplug_link = TRUE;
+$eplug_link_name = EC_LAN_83; 		// "Calendar";
+$eplug_link_url = "".$ec_dir."calendar.php";
+$eplug_link_perms = "everyone"; 	// Everyone, Guest, Member, Admin 
+
+
+// Text to display after plugin successfully installed 
+//----------------------------------------------------
+$eplug_done = EC_LAN_82; 		// "To activate please go to your menus screen and select the calendar_menu into one of your menu areas.";
+
+
+
+// upgrading ... //
+$upgrade_add_prefs = array();
+$upgrade_remove_prefs = array();
+$upgrade_alter_tables = array();
+$version_notes = "";
+
+
+//----------------------------------------------------
+//		Solely for upgrades after here
+//----------------------------------------------------
+
+if (!function_exists('create_ec_log_dir'))
+{
+  function create_ec_log_dir($eplug_folder)
+  {
+	$response = "";
+	$cal_log_dir = e_PLUGIN.$eplug_folder.'/log';
+	if (!is_dir($cal_log_dir))
+	{  // Need to create log directory
+      if (!mkdir($cal_log_dir,0666))
+	  {
+		$response = EC_ADLAN_A158."<br />";
+	  }
+	}
+	if (!is_dir($cal_log_dir))
+	{
+      $response .= EC_ADLAN_A153;
+	  return $response;
+	}
+  
+	// Now check directory permissions
+	if (!is_writable($cal_log_dir."/"))
+	{
+      if (!chmod($cal_log_dir,0666))
+	  {
+		$response = EC_ADLAN_A154."<br />";
+	  }
+      if (!is_writable($cal_log_dir."/"))
+      {
+		$response .= EC_ADLAN_A155;
+      }
+	}
+	return $response;
+  }
+}
+
+// Note: Decimal points removed from version number, two decimal places implied 
+if ($ecal_ver_num < 350)
+{   // To version 3.50
+//  echo "Add for V3.5<br />";
+$upgrade_alter_tables = array_merge($upgrade_alter_tables,array(
+"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_class int(10) unsigned NOT NULL default '0'",
+"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_subs tinyint(3) unsigned NOT NULL default '0'",
+"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_force tinyint(3) unsigned NOT NULL default '0'",
+"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_ahead tinyint(3) unsigned NOT NULL default '0'",
+"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_msg1 text",
+"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_msg2 text",
+"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_notify  tinyint(3) unsigned NOT NULL default '0'",
+"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_last int(10) unsigned NOT NULL default '0'",
+"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_today int(10) unsigned NOT NULL default '0'",
+"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_lastupdate int(10) unsigned NOT NULL default '0'",
+"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_addclass int(10) unsigned NOT NULL default '0'",
+"CREATE TABLE ".MPREFIX."event_subs (
+	event_subid int(10) unsigned NOT NULL auto_increment,
+	event_userid  int(10) unsigned NOT NULL default '0',
+	event_cat  int(10) unsigned NOT NULL default '0',
+	PRIMARY KEY  (event_subid)
+	) ENGINE=MyISAM;"
+));
+$version_notes .= "<u>3.5</u><br />".EC_ADLAN_A156."<br />";
+}
+
+// To version 3.60 - fair number of tweaks overall
+if ($ecal_ver_num < 360)
+{
+//  echo "Add for V3.6<br />";
+$upgrade_alter_tables = array_merge($upgrade_alter_tables,array(
+"ALTER TABLE ".MPREFIX."event_cat DROP event_cat_force",
+"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_description text",
+"ALTER TABLE ".MPREFIX."event_cat ADD event_cat_force_class int(10) unsigned NOT NULL default '0'"
+));
+  $verprefs = array(
+	"eventpost_adminlog" => 0,
+	"eventpost_showeventcount" => 1,
+	"eventpost_menuheading" => EC_LAN_140,
+	"eventpost_daysforward" => 30,
+	"eventpost_numevents" => 3,
+	"eventpost_checkrecur" => 1,
+	"eventpost_linkheader" => 0,
+	"eventpost_showcaticon" => 0,
+	"eventpost_dateformat" => 1,
+	"eventpost_fivemins" => 0,
+	"eventpost_emaillog" => 1,
+	"eventpost_caltime" => 0,
+	"eventpost_datedisplay" => 1,
+	"eventpost_timedisplay" => 0,
+	"eventpost_timecustom" => "%H%M",
+	"eventpost_fe_set" => "",
+	"eventpost_namelink" => 1,
+	"eventpost_recentshow" => 0,
+	"eventpost_dateevent"  => 1,
+	"eventpost_datenext"   => 1,
+	"eventpost_eventdatecustom" => "%A %d %B %Y",
+	"eventpost_nextdatecustom"   => "%d %b",
+    "eventpost_menulink" => 0 );
+	$upgrade_add_prefs = array_merge($upgrade_add_prefs,$verprefs);
+	$version_notes .= "<u>3.6</u><br />".EC_ADLAN_A156."<br />".create_ec_log_dir($eplug_folder)."<br />
+	                   <a href='".e_PLUGIN_ABS.$eplug_folder."/".$eplug_conffile."'>Configure</a><br />";
+					   
+  $upgrade_remove_prefs = array(
+    "eventpost_addcat",
+	"eventpost_evtoday",
+	"eventpost_headercss",
+	"eventpost_daycss",
+	"eventpost_todaycss"
+	);
+}
+
+
+// Mods for 3.70 - not much
+if ($ecal_ver_num < 370)
+{
+//  echo "Add for V3.7<br />";
+  $upgrade_alter_tables = array_merge($upgrade_alter_tables,array($ec_insert_entries));		// Add the 'default' category
+
+  $verprefs = array(
+    "eventpost_showmouseover" => 0,
+	"eventpost_fe_hideifnone" => '0',
+	"eventpost_fe_showrecent" => 0,
+	"eventpost_printlists" => 1
+	);
+	$upgrade_add_prefs = array_merge($upgrade_add_prefs,$verprefs);
+	$version_notes .= "<u>3.7</u><br />".EC_ADLAN_A164;
+}
+
+$eplug_upgrade_done = EC_LAN_108."<br />".$version_notes;
+
+
 ?>
\ No newline at end of file
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/search/search_parser.php 1.0.4.src/e107_plugins/calendar_menu/search/search_parser.php
--- 1.0.2.src/e107_plugins/calendar_menu/search/search_parser.php	2013-10-11 14:02:27.348000028 -0500
+++ 1.0.4.src/e107_plugins/calendar_menu/search/search_parser.php	2013-09-26 16:49:50.000000000 -0500
@@ -1,41 +1,43 @@
-<?php
-/*
-+ ----------------------------------------------------------------------------+
-|     e107 website system
-|
-|     Copyright (C) 2001-2002 Steve Dunstan (jalist@e107.org)
-|     Copyright (C) 2008-2010 e107 Inc (e107.org)
-|
-|
-|     Released under the terms and conditions of the
-|     GNU General Public License (http://gnu.org).
-|
-|     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/search/search_parser.php $
-|     $Revision: 11678 $
-|     $Id: search_parser.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
-+----------------------------------------------------------------------------+
-*/
-if (!defined('e107_INIT')) { exit; }    
-
-$return_fields = 'event_id, event_start, event_title, event_location, event_details';
-$search_fields = array('event_title', 'event_location', 'event_details');
-$weights = array('1.2', '0.6', '0.6');
-$no_results = LAN_198;
-$where = "";
-$order = array('event_start' => DESC);
-
-$ps = $sch -> parsesearch('event', $return_fields, $search_fields, $weights, 'search_events', $no_results, $where, $order);
-$text .= $ps['text'];
-$results = $ps['results'];
-
-function search_events($row) {
-	global $con;
-	$res['link'] = e_PLUGIN."calendar_menu/event.php?".time().".event.".$row['event_id'];
-	$res['title'] = $row['event_title'];
-	$res['summary'] = $row['event_details'];
-	$res['detail'] = $row['event_location']." | ".$con -> convert_date($row['event_start'], "long");
-	return $res;
-}
-
+<?php
+/*
+ * e107 website system
+ *
+ * Copyright (C) 2002-2012 e107 Inc (e107.org)
+ * Released under the terms and conditions of the
+ * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
+ *
+ * Event calendar - search parser
+ *
+ * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/search/search_parser.php $
+ * $Id: search_parser.php 13009 2012-10-27 15:19:55Z e107steved $
+ */
+ 
+if (!defined('e107_INIT')) { exit; }    
+
+if (!isset($pref['plug_installed']['calendar_menu']))
+{
+	header('Location: '.e_BASE.'index.php');
+	exit;
+}
+
+$return_fields = 'event_id, event_start, event_title, event_location, event_details';
+$search_fields = array('event_title', 'event_location', 'event_details');
+$weights = array('1.2', '0.6', '0.6');
+$no_results = LAN_198;
+$where = "";
+$order = array('event_start' => DESC);
+
+$ps = $sch -> parsesearch('event', $return_fields, $search_fields, $weights, 'search_events', $no_results, $where, $order);
+$text .= $ps['text'];
+$results = $ps['results'];
+
+function search_events($row) {
+	global $con;
+	$res['link'] = e_PLUGIN."calendar_menu/event.php?".time().".event.".$row['event_id'];
+	$res['title'] = $row['event_title'];
+	$res['summary'] = $row['event_details'];
+	$res['detail'] = $row['event_location']." | ".$con -> convert_date($row['event_start'], "long");
+	return $res;
+}
+
 ?>
\ No newline at end of file
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/subscribe.php 1.0.4.src/e107_plugins/calendar_menu/subscribe.php
--- 1.0.2.src/e107_plugins/calendar_menu/subscribe.php	2013-10-11 14:02:27.349000028 -0500
+++ 1.0.4.src/e107_plugins/calendar_menu/subscribe.php	2013-09-26 16:49:50.000000000 -0500
@@ -1,104 +1,104 @@
-<?php
-/*
- * e107 website system
- *
- * Copyright (C) 2002-2010 e107 Inc (e107.org)
- * Released under the terms and conditions of the
- * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
- *
- * Event calendar - user email subscriptions management
- *
- * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/subscribe.php $
- * $Id: subscribe.php 12440 2011-12-05 18:03:34Z e107steved $
- */
-
-require_once("../../class2.php");
+<?php
+/*
+ * e107 website system
+ *
+ * Copyright (C) 2002-2012 e107 Inc (e107.org)
+ * Released under the terms and conditions of the
+ * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
+ *
+ * Event calendar - email subscriptions
+ *
+ * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/subscribe.php $
+ * $Id: subscribe.php 13009 2012-10-27 15:19:55Z e107steved $
+ */
+
+require_once("../../class2.php");
 if (!isset($pref['plug_installed']['calendar_menu']))
 {
  header("Location: ".e_BASE."index.php");
 	exit();
 }
-include_lan(e_PLUGIN . "calendar_menu/languages/".e_LANGUAGE.".php");
-
-define("PAGE_NAME", EC_LAN_80);
-require_once(HEADERF);
-
-
-if ((USER) && (isset($pref['eventpost_asubs']) && ($pref['eventpost_asubs'] == '1')))
-{
-$cal_db = new db;			// Probably best to keep this
-
-if (isset($_POST['upsubs']))
-{
-    $cal_cats = $tp -> toDB($_POST['event_list']);		// IDs of allowed categories
-    $cal_subs =  $tp -> toDB($_POST['event_subd']);		// Checkbox results
-    $cal_db->db_Delete("event_subs", "event_userid='" . USERID . "'");		// Delete all for this user to start
-    foreach($cal_cats as $cal_row)
-    {	// Now add in a subscription for each allowed category
-        if ($cal_subs[$cal_row])
-        {
-            $cal_inargs = "0,'" . USERID . "','" . $cal_row . "'";
-            $cal_db->db_Insert("event_subs", $cal_inargs);
-        } 
-        // print $cal_row .  $cal_subs[$cal_row] . "<br>";
-    } 
-    $caltext = "<table class='fborder' width='97%'>
-<tr><td class='fcaption' >" . EC_LAN_130 . "</td></tr>
-<tr><td class='forumheader3' ><a href='calendar.php'>" . EC_LAN_131 . "</a></tr>
-<tr><td class='fcaption' >&nbsp;</td></tr></table>";
-} 
-else
-{
-    $caltext = "<form id='calsubs' action='" . e_SELF . "' method='post' >
-<table class='fborder' width='97%'>
-<tr><td class='fcaption' colspan='3'>" . EC_LAN_125 . "</td></tr>
-<tr><td class='forumheader2' >" . EC_LAN_126 . "</td><td class='forumheader2' >" . EC_LAN_127 . "</td><td class='forumheader2' >" . EC_LAN_136 . "</td></tr>"; 
-    // Get list of currently subscribed
-  $cal_db->db_Select("event_subs", "event_cat", "where event_userid='" . USERID . "'", "nowhere");
-  while ($cal_s = $cal_db->db_Fetch())
-  {
-    extract($cal_s);
-    $cal_array[] = $event_cat;
-  } // while 
-
-    // Get list of categories that have subscriptions and are visible to this member
-  $cal_args = "select * from #event_cat 
-	where event_cat_subs>0  and (find_in_set(event_cat_class,'".USERCLASS_LIST."')  OR find_in_set(event_cat_force_class,'".USERCLASS_LIST."'))";
-  if ($cal_db->db_Select_gen($cal_args))
-  { 
-	// echo $cal_args."<br />";
-    while ($cal_row = $cal_db->db_Fetch())
-    {
-      extract($cal_row);
-      $caltext .= "<tr><td class='forumheader3' style='width:10%;'>";
-	  if (check_class($event_cat_force_class))
-	  {
-	    $caltext .= EC_LAN_126;
-	  }
-	  else
-	  {
-	    $caltext .= "<input type='hidden' name='event_list[]' value='" . $event_cat_id . "' />
-	    <input type='checkbox' class='tbox' value='1' name='event_subd[$event_cat_id]' " . (in_array($event_cat_id, $cal_array)?"checked='checked' ":"") . " /> </td>";
-	  }
-	  $caltext .= "<td class='forumheader3'>{$event_cat_name}</td><td class='forumheader3'>{$event_cat_description}</td></tr>";
-    } 
-  } 
-  else
-  {
-    $caltext .= "<tr><td class='forumheader3' colspan='3'>" . EC_LAN_128 . "</td></tr>";
-  } 
-  $caltext .= "<tr><td class='forumheader3' colspan='3'><input class='tbox' type='submit' value='" . EC_LAN_129 . "' name='upsubs' /></td></tr>";
-  $caltext .= "</table></form>";
-}
-}
-else
-{
-  if (isset($pref['eventpost_asubs']) && ($pref['eventpost_asubs'] == '1'))
-  $caltext = EC_LAN_142;	// Register or log in 
-  else
-  $caltext = EC_LAN_143;	// No facility
-} 
-$ns->tablerender(EC_LAN_124, $caltext);
-require_once(FOOTERF);
-
+include_lan(e_PLUGIN . "calendar_menu/languages/".e_LANGUAGE.".php");
+
+define("PAGE_NAME", EC_LAN_80);
+require_once(HEADERF);
+
+
+if ((USER) && (isset($pref['eventpost_asubs']) && ($pref['eventpost_asubs'] == '1')))
+{
+$cal_db = new db;			// Probably best to keep this
+
+if (isset($_POST['upsubs']))
+{
+    $cal_cats = $tp -> toDB($_POST['event_list']);		// IDs of allowed categories
+    $cal_subs =  $tp -> toDB($_POST['event_subd']);		// Checkbox results
+    $cal_db->db_Delete("event_subs", "event_userid='" . USERID . "'");		// Delete all for this user to start
+    foreach($cal_cats as $cal_row)
+    {	// Now add in a subscription for each allowed category
+        if ($cal_subs[$cal_row])
+        {
+            $cal_inargs = "0,'" . USERID . "','" . $cal_row . "'";
+            $cal_db->db_Insert("event_subs", $cal_inargs);
+        } 
+        // print $cal_row .  $cal_subs[$cal_row] . "<br>";
+    } 
+    $caltext = "<table class='fborder' width='97%'>
+<tr><td class='fcaption' >" . EC_LAN_130 . "</td></tr>
+<tr><td class='forumheader3' ><a href='calendar.php'>" . EC_LAN_131 . "</a></tr>
+<tr><td class='fcaption' >&nbsp;</td></tr></table>";
+} 
+else
+{
+    $caltext = "<form id='calsubs' action='" . e_SELF . "' method='post' >
+<table class='fborder' width='97%'>
+<tr><td class='fcaption' colspan='3'>" . EC_LAN_125 . "</td></tr>
+<tr><td class='forumheader2' >" . EC_LAN_126 . "</td><td class='forumheader2' >" . EC_LAN_127 . "</td><td class='forumheader2' >" . EC_LAN_136 . "</td></tr>"; 
+    // Get list of currently subscribed
+  $cal_db->db_Select("event_subs", "event_cat", "where event_userid='" . USERID . "'", "nowhere");
+  while ($cal_s = $cal_db->db_Fetch())
+  {
+    extract($cal_s);
+    $cal_array[] = $event_cat;
+  } // while 
+
+    // Get list of categories that have subscriptions and are visible to this member
+  $cal_args = "select * from #event_cat 
+	where event_cat_subs>0  and (find_in_set(event_cat_class,'".USERCLASS_LIST."')  OR find_in_set(event_cat_force_class,'".USERCLASS_LIST."'))";
+  if ($cal_db->db_Select_gen($cal_args))
+  { 
+	// echo $cal_args."<br />";
+    while ($cal_row = $cal_db->db_Fetch())
+    {
+      extract($cal_row);
+      $caltext .= "<tr><td class='forumheader3' style='width:10%;'>";
+	  if (check_class($event_cat_force_class))
+	  {
+	    $caltext .= EC_LAN_126;
+	  }
+	  else
+	  {
+	    $caltext .= "<input type='hidden' name='event_list[]' value='" . $event_cat_id . "' />
+	    <input type='checkbox' class='tbox' value='1' name='event_subd[$event_cat_id]' " . (in_array($event_cat_id, $cal_array)?"checked='checked' ":"") . " /> </td>";
+	  }
+	  $caltext .= "<td class='forumheader3'>{$event_cat_name}</td><td class='forumheader3'>{$event_cat_description}</td></tr>";
+    } 
+  } 
+  else
+  {
+    $caltext .= "<tr><td class='forumheader3' colspan='3'>" . EC_LAN_128 . "</td></tr>";
+  } 
+  $caltext .= "<tr><td class='forumheader3' colspan='3'><input class='tbox' type='submit' value='" . EC_LAN_129 . "' name='upsubs' /></td></tr>";
+  $caltext .= "</table></form>";
+}
+}
+else
+{
+  if (isset($pref['eventpost_asubs']) && ($pref['eventpost_asubs'] == '1'))
+  $caltext = EC_LAN_142;	// Register or log in 
+  else
+  $caltext = EC_LAN_143;	// No facility
+} 
+$ns->tablerender(EC_LAN_124, $caltext);
+require_once(FOOTERF);
+
 ?>
\ No newline at end of file
diff -aruN 1.0.2.src/e107_plugins/calendar_menu/subs_menu.php 1.0.4.src/e107_plugins/calendar_menu/subs_menu.php
--- 1.0.2.src/e107_plugins/calendar_menu/subs_menu.php	2013-10-11 14:02:27.348000028 -0500
+++ 1.0.4.src/e107_plugins/calendar_menu/subs_menu.php	2013-09-26 16:49:50.000000000 -0500
@@ -1,250 +1,322 @@
-<?php
-/*
-+ ----------------------------------------------------------------------------+
-|     e107 website system
-|
-|     Copyright (C) 2001-2002 Steve Dunstan (jalist@e107.org)
-|     Copyright (C) 2008-2010 e107 Inc (e107.org)
-|
-|     Released under the terms and conditions of the
-|     GNU General Public License (http://gnu.org).
-|
-|     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/subs_menu.php $
-|     $Revision: 11678 $
-|     $Id: subs_menu.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
-+----------------------------------------------------------------------------+
-| 09.07.06 - Mods by steved:
-|	General restructuring to use common routines
-| 	Support for sending emails on previous day.
-|	Logging capability
-| 	Debugging option
-|
-| 11.07.06 - Adjustment to logging messages
-| 12.07.06 - More adjustment to logging messages
-| 15.07.06 - Adjustment to 'tomorrow' query
-| 17.07.06 - More adjustment to 'tomorrow' query
-|
-| 04.10.06 - Mods to mailout to allow mix of voluntary and forced subs to the same event
-| 24.10.06 - Change DB names so works as a menu
-| 25.10.06 - Logging selectively disabled when run as menu
-| 27.10.06 - Update queries to new structure, don't email banned users
-| 31.10.06 - Attempt to optimise query better
-| 01.11.06 - More refinements on query
-| 05.11.06 - More refinement on query - ignores midnight at end of day.   **** BANG ****
-|
-+----------------------------------------------------------------------------+
-*/
-
-if (!defined('e107_INIT')) { exit; }
-
-// This menu can be called from a cron job - see readme.rtf
-$run_from_menu = function_exists("parseheader");		// Use this to suppress logging in 'through' path
-$ec_dir = e_PLUGIN . "calendar_menu/";
-// Check if we are going to do the notify
-
-$debug_level = 0;			// Set to 1 or 2 to suppress actual sending of emails
-
-if (($debug_level > 0) && e_QUERY)
-{  // Run with query of ?dd-mm[-yy] to test specific date
-  list($day,$month,$year) = explode("-",e_QUERY);
-  if (!isset($year) || ($year == 0)) $year = date("Y");
-  $cal_starttime = mktime(0,0,0,$month,$day,$year);
-  echo "Debug run for {$day}-{$month}-{$year}<br />";
-}
-else
-{  // Normal operation
-$cal_starttime = mktime(0, 0, 0, date("n"), date("d"), date("Y"));
-}
-
-$log_requirement = 0;		// Logging required 0=none, 1=summary, 2=detailed
-if (isset($pref['eventpost_emaillog'])) $log_requirement = $pref['eventpost_emaillog'];
-if ($debug_level >= 2) $log_requirement = 2;	// Force full logging if debug
-
-if ($log_requirement > 0)
-{
-  $log_filename = $ec_dir.'log/calendar_mail.txt';
-  if (!$run_from_menu)
-  {
-    if (!($handle = fopen($log_filename, 'a'))) $log_requirement = 0;
-    if (fwrite($handle,"\r\n\r\nMail subscriptions run started at ".date("D j M Y G:i:s")) === false)  $log_requirement = 0;
-    fclose($handle);
-  }
-}
-
-// Start with the 'in advance' emails
-$cal_args = "select * from #event left join #event_cat on event_category=event_cat_id where (event_cat_subs>0 OR event_cat_force_class != '') and 
-event_cat_last < " . intval($cal_starttime) . " and 
-event_cat_ahead > 0 and 
-event_start >= (" . intval($cal_starttime) . "+(86400*(event_cat_ahead))) and
-event_start <  (" . intval($cal_starttime) . "+(86400*(event_cat_ahead+1))) and
-find_in_set(event_cat_notify,'1,3,5,7')";
-
-send_mailshot($cal_args, 'Advance',1);
-
-
-
-// then for today
-//$cal_starttime = mktime(0, 0, 0, date("n"), date("d"), date("Y"));
-$cal_args = "select * from #event left join #event_cat on event_category=event_cat_id where (event_cat_subs>0 OR event_cat_force_class != '') and 
-event_cat_today < " . intval($cal_starttime) . " and 
-event_start >= (" . intval($cal_starttime) . ") and
-event_start <  (86400+" . intval($cal_starttime) . ") and
-find_in_set(event_cat_notify,'2,3,6,7')";
-
-send_mailshot($cal_args, 'today',2);
-
-
-// Finally do 'day before' emails
-$cal_args = "select * from #event left join #event_cat on event_category=event_cat_id where (event_cat_subs>0 OR event_cat_force_class != '') and 
-event_cat_today < " . intval($cal_starttime) . " and 
-event_start >= (" . intval($cal_starttime) ." + 86400 ) and
-event_start <  (" . intval($cal_starttime) ." + 172800) and
-find_in_set(event_cat_notify,'4,5,6,7')";
-
-send_mailshot($cal_args, 'tomorrow',2);
-
-
-if (($log_requirement > 0) && (!$run_from_menu))
-{
-  if (!($handle = fopen($log_filename, 'a'))) $log_requirement = 0;
-  if (fwrite($handle," .. completed at ".date("D j M Y G:i:s")."\r\n") === false) $log_requirement = 0;
-  fclose($handle);
-}
-
-// Done
-
-
-/*
-  Function to actually send a mailshot
-*/
-function send_mailshot($cal_query, $shot_type, $msg_num)
-{
-  global $sql, $sql2;
-  global $log_requirement, $log_filename, $debug_level;
-  global $pref;
-  global $run_from_menu;
-  
-  if (($log_requirement > 1)  && (!$run_from_menu))
-  {
-    if (!$handle = fopen($log_filename, 'a')) $log_requirement = 0;
-    if (fwrite($handle,"\r\n  Starting emails for ".$shot_type." at ".date("D j M Y G:i:s")) === false)  $log_requirement = 0;
-    if ($debug_level >= 2)
-    {
-      if (fwrite($handle,"\r\n    Query is: ".$cal_query."\r\n") === false) $log_requirement = 0;
-    }
-  }
-
-if ($num_cat_proc = $sql->db_Select_gen($cal_query))
-  {  // Got at least one event to process here
-    if ($log_requirement > 1)
-    {
-      if ($run_from_menu) if (!($handle = fopen($log_filename, 'a'))) $log_requirement = 0;
-      if (fwrite($handle," - ".$num_cat_proc." categories found to process\r\n") === false)  $log_requirement = 0;
-    }
-    require_once(e_HANDLER . "mail.php");
-    while ($cal_row = $sql->db_Fetch())
-    {  // Process one event at a time
-      extract($cal_row);
-		
-      if ($log_requirement > 1)
-	  {
-		  if (fwrite($handle,"    Processing event: ".$event_title." \r\n") === false)  $log_requirement = 0;
-	  }
-		
-	  if ($msg_num == 1)
-        $sql2->db_Update("event_cat", "event_cat_last=" . time() . " where event_cat_id=" . intval($event_cat_id));
-	  else
-        $sql2->db_Update("event_cat", "event_cat_today=" . time() . " where event_cat_id=" . intval($event_cat_id));
-
-
-// Start of next try on query
-// Four cases for the query:
-//	1. No forced mailshots - based on event_subs table only									Need INNER JOIN
-//	2. Forced mailshot to members - send to all users (don't care about subscriptions)		Don't need JOIN
-// 	3. Forced mailshot to group of members - based on user table only						Don't need JOIN
-//	4. Forced mailshot to group, plus optional subscriptions - use the lot!    				Need LEFT JOIN
-// (Always block sent to banned members)
-	  $manual_subs = (isset($pref['eventpost_asubs']) && ($pref['eventpost_asubs'] == '1'));
-	  $subs_fields = '';
-	  $subs_join = '';
-	  $where_clause = '';
-	  $group_clause = '';
-	  
-	  
-	  if ($event_cat_force_class != e_UC_MEMBER)
-	  {  // Cases 1, 3, 4 (basic query does for case 2)
-	  
-	    if ((!$event_cat_force_class) || ($manual_subs))
-	    {  // Cases 1 & 4 - need to join with event_subs database
-	      $subs_fields = ", es.* ";
-		  if ($event_cat_force_class) $subs_join = "LEFT"; else $subs_join = "INNER";
-	      $subs_join   .= " join #event_subs AS es on u.user_id=es.event_userid ";
-		  $where_clause = " es.event_cat='".intval($event_category)."' ";
-		  $group_clause = " GROUP BY u.user_id";
-	    }
-
-	    if ($event_cat_force_class)
-		{  // cases 3 and 4 - ... and check for involuntary subscribers
-		    if ($where_clause) $where_clause .= " OR ";
-		    if ($event_cat_force_class == e_UC_ADMIN)
-		    {
-		      $where_clause .= "(u.user_admin = '1' )";
-		    }
-		    else
-		    {
-	          $where_clause .= "find_in_set('".intval($event_cat_force_class)."', u.user_class)";
-		    }
-		}
-
-	    if ($where_clause) $where_clause = ' AND ('.$where_clause.' ) ';
-	  }   // End of cases 1, 3, 4
-	  
-	  $cal_emilargs = "SELECT u.user_id, u.user_class, u.user_email, u.user_name, u.user_ban, u.user_admin{$subs_fields}
-		  from #user AS u {$subs_join}
-		  WHERE u.user_ban = '0' {$where_clause} {$group_clause}";
-		  
-
-        if ($debug_level >= 2)
-		{
-		  if (fwrite($handle,"\r\n    Email selection query is: ".$cal_emilargs."\r\n") === false) $log_requirement = 0;
-		}
-        if ($num_shots = $sql2->db_Select_gen($cal_emilargs))
-        {
-            if ($log_requirement > 1)
-			{
-			  if (fwrite($handle," - ".$num_shots." emails found to send\r\n") === false)  $log_requirement = 0;
-			}
-            while ($cal_emrow = $sql2->db_Fetch())
-            {
-              extract($cal_emrow);
-			  if ($msg_num == 1)
-                $cal_msg = $event_title . "\n\n" . $event_cat_msg1;
-			  else
-                $cal_msg = $event_title . "\n\n" . $event_cat_msg2;
-              if ($debug_level == 0) $send_result = sendemail($user_email, $pref['eventpost_mailsubject'], $cal_msg, $user_name, $pref['eventpost_mailaddress'], $pref['eventpost_mailfrom']); 
-			  if ($log_requirement > 1)
-			  {
-			    $log_string = "      Send to: ".$user_email." Name: ".$user_name;
-				if ($debug_level > 0) 
-				  { $log_string .= " *DEBUG*
-"; 					} 
-				else 
-				  { $log_string .= " Result = ".$send_result."
-"; 					}
-			    if (fwrite($handle,$log_string) === false) $log_requirement = 0;
-			  }
-            } 
-        } 
-    } // while    
-    if ($log_requirement > 1)
-    {
-	  if (fwrite($handle,"  Completed emails for ".$shot_type." at ".date("D j M Y G:i:s")."\r\n") === false)  $log_requirement = 0;
-	  fclose($handle);
-	}
-  }
-} 
-
-
-
+<?php
+/*
+ * e107 website system
+ *
+ * Copyright (C) 2002-2012 e107 Inc (e107.org)
+ * Released under the terms and conditions of the
+ * GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
+ *
+ * Event calendar - event subscription emailing
+ *
+ * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/calendar_menu/subs_menu.php $
+ * $Id: subs_menu.php 13009 2012-10-27 15:19:55Z e107steved $
+ */
+
+if (!defined('e107_INIT')) { exit; }
+
+// This menu is best called from a cron job - see readme.pdf
+global $ec_default_msg_1, $ec_default_msg_2, $ec_log_requirement, $ec_debug_level, $ec_run_from_menu, $tp;
+
+
+global $ecal_class;
+if (!is_object($ecal_class))
+{
+	require_once(e_PLUGIN.'calendar_menu/ecal_class.php');
+	$ecal_class = new ecal_class;
+}
+
+// Work out whether we're being called as a menu (i.e. within a displayed page) or not
+$ec_run_from_menu = (defined('USER_AREA') && USER_AREA) || (defined('ADMIN_AREA') && ADMIN_AREA);
+//echo ($ec_run_from_menu == TRUE ? "Run from menu" : "Standalone")."<br />";
+
+if ($ec_run_from_menu)
+{
+  if ($cacheData = $e107cache->retrieve("nomd5_cal_subs",$ecal_class->max_cache_time, TRUE)) exit;
+}
+
+@include_lan(e_PLUGIN."calendar_menu/languages/".e_LANGUAGE.".php");		// May be needed for mailouts
+
+if (!isset($calendar_shortcodes)) require(e_PLUGIN."calendar_menu/calendar_shortcodes.php");
+if (is_readable(THEME."ec_mailout_template.php")) 
+{  // Has to be require
+  require(THEME."ec_mailout_template.php");
+}
+else 
+{
+  require(e_PLUGIN."calendar_menu/ec_mailout_template.php");
+}
+
+
+$ec_debug_level = 0;			// Set to 1 or 2 to suppress actual sending of emails
+$ec_default_msg_1 = "";
+$ec_default_msg_2 = "";
+
+
+if (($ec_debug_level > 0) && e_QUERY)
+{  // Run with query of ?dd-mm[-yy] to test specific date
+  list($day,$month,$year) = explode("-",e_QUERY);
+  if (!isset($year) || ($year == 0)) $year = date("Y");
+  $cal_starttime = mktime(0,0,0,$month,$day,$year);
+  echo "Debug run for {$day}-{$month}-{$year}<br />";
+}
+else
+{  // Normal operation
+  $cal_starttime = mktime(0, 0, 0, date("n"), date("d"), date("Y"));
+}
+
+
+$ec_log_requirement = 0;		// Logging required 0=none, 1=summary, 2=detailed
+if (isset($pref['eventpost_emaillog'])) $ec_log_requirement = $pref['eventpost_emaillog'];
+if ($ec_debug_level >= 2) $ec_log_requirement = 2;	// Force full logging if debug
+
+
+function subs_log_a_line($log_text,$close_after = FALSE, $log_always = FALSE)
+{
+  global $ec_log_requirement, $ec_run_from_menu;
+  if ($ec_log_requirement == 0) return;
+  if ($ec_run_from_menu && ($log_always == FALSE)) return;
+//  echo "Logging: ".$log_text."<br />";
+  static $handle = NULL;
+  $log_filename = e_PLUGIN."calendar_menu/log/calendar_mail.txt";
+  if ($handle == NULL)
+  {
+    if (!($handle = fopen($log_filename, "a"))) 
+	{ // Problem creating file?
+	  echo "File open failed!<br />";
+	  $ec_log_requirement = 0; 
+	  return; 
+	}
+  }
+  
+  if (fwrite($handle,$log_text) == FALSE) 
+  {
+    $ec_log_requirement = 0;
+	echo "File write failed!<br />";
+  }
+  
+  if ($close_after)
+  {
+    fclose($handle);
+	$handle = NULL;
+  }
+}
+
+
+// Start of the 'real' code
+subs_log_a_line("\r\n\r\nMail subscriptions run started at ".date("D j M Y G:i:s"),TRUE,FALSE);
+
+
+
+// Start with the 'in advance' emails
+$cal_args = "select * from #event left join #event_cat on event_category=event_cat_id where (event_cat_subs>0 OR event_cat_force_class>0) and 
+event_cat_last < " . intval($cal_starttime) . " and 
+event_cat_ahead > 0 and 
+event_start >= (" . intval($cal_starttime) . "+(86400*(event_cat_ahead))) and
+event_start <  (" . intval($cal_starttime) . "+(86400*(event_cat_ahead+1))) and
+find_in_set(event_cat_notify,'1,3,5,7')";
+
+ec_send_mailshot($cal_args, 'Advance',1, $calendar_shortcodes);
+
+
+
+// then for today
+$cal_args = "select * from #event left join #event_cat on event_category=event_cat_id where (event_cat_subs>0 OR event_cat_force_class>0) and 
+event_cat_today < " . intval($cal_starttime) . " and 
+event_start >= (" . intval($cal_starttime) . ") and
+event_start <  (86400+" . intval($cal_starttime) . ") and
+find_in_set(event_cat_notify,'2,3,6,7')";
+
+ec_send_mailshot($cal_args, 'today',2, $calendar_shortcodes);
+
+
+if ($ec_debug_level == 0)
+{
+// Finally do 'day before' emails (its an alternative to 'today' emails)
+$cal_args = "select * from #event left join #event_cat on event_category=event_cat_id where (event_cat_subs>0 OR event_cat_force_class>0) and 
+event_cat_today < " . intval($cal_starttime) . " and 
+event_start >= (" . intval($cal_starttime) ." + 86400 ) and
+event_start <  (" . intval($cal_starttime) ." + 172800) and
+find_in_set(event_cat_notify,'4,5,6,7')";
+}
+else
+{
+// Finally do 'day before' emails (its an alternative to 'today' emails)
+$cal_args = "select * from #event left join #event_cat on event_category=event_cat_id where (event_cat_subs>0 OR event_cat_force_class>0) and 
+event_start >= (" . intval($cal_starttime) ." + 86400 ) and
+event_start <  (" . intval($cal_starttime) ." + 172800) and
+find_in_set(event_cat_notify,'4,5,6,7')";
+}
+
+ec_send_mailshot($cal_args, 'tomorrow',2, $calendar_shortcodes);
+
+
+subs_log_a_line("\r\n .. completed at ".date("D j M Y G:i:s")."\r\n",TRUE,FALSE);
+
+// This stops the mailout running again until first access of tomorrow
+if ($ec_run_from_menu)
+{
+  $e107cache->set("nomd5_cal_subs", time(),TRUE);
+}
+
+// Done
+
+
+
+// Function called to load in default templates (messages) if required - only accesses database once
+function ec_load_default_messages()
+{
+  global $sql2, $ec_default_msg_1, $ec_default_msg_2;
+  if (($ec_default_msg_1 != "") && ($ec_default_msg_2 != "")) return;
+  if ($sql2->db_Select("event_cat", "*", "event_cat_name = '".EC_DEFAULT_CATEGORY."' "))
+  { 
+    if ($row = $sql2->db_Fetch())
+	{
+	  $ec_default_msg_1 = $row['event_cat_msg1'];
+	  $ec_default_msg_2 = $row['event_cat_msg2'];
+	}
+  }
+  // Put in generic message rather than nothing - will help flag omission
+  if ($ec_default_msg_1 == "") $ec_default_msg_1 = EC_LAN_146;
+  if ($ec_default_msg_2 == "") $ec_default_msg_2 = EC_LAN_147;
+}
+
+/*
+  Function to actually send a mailshot
+*/
+function ec_send_mailshot($cal_query, $shot_type, $msg_num, $calendar_shortcodes)
+{
+	global $sql, $sql2;
+	global  $ec_debug_level, $ec_log_requirement;
+	global $pref, $tp, $thisevent;
+	global $ec_default_msg_1, $ec_default_msg_2;
+  
+	if ($ec_log_requirement > 1)
+	{
+		subs_log_a_line("\r\n  Starting emails for ".$shot_type." at ".date("D j M Y G:i:s"),FALSE,FALSE);
+		if ($ec_debug_level >= 2) subs_log_a_line("\r\n    Query is: ".$cal_query."\r\n",FALSE,FALSE);
+	}
+
+	if  ($num_cat_proc = $sql->db_Select_gen($cal_query))
+	{  // Got at least one event to process here
+		if ($ec_log_requirement > 1)
+			subs_log_a_line(" - ".$num_cat_proc." categories found to process\r\n",FALSE,TRUE);
+	
+		require_once(e_HANDLER . "mail.php");
+		while ($cal_row = $sql->db_Fetch())
+		{  // Process one event at a time
+			$thisevent = $cal_row;    // Used for shortcodes
+			extract($cal_row);
+			
+			subs_log_a_line("    Processing event: ".$event_title." \r\n",FALSE,TRUE);
+	
+			// Note that event processed, and generate the email
+			if ($msg_num == 1)
+			{
+				$sql2->db_Update("event_cat", "event_cat_last=" . time() . " where event_cat_id=" . intval($event_cat_id));
+		//        $cal_msg = $event_title . "\n\n" . $event_cat_msg1;
+				$cal_msg = $event_cat_msg1;
+				if (trim($cal_msg) == "") 
+				{
+				  ec_load_default_messages();
+				  $cal_msg = $ec_default_msg_1;
+				}
+			}
+			else
+			{
+				$sql2->db_Update("event_cat", "event_cat_today=" . time() . " where event_cat_id=" . intval($event_cat_id));
+		//        $cal_msg = $event_title . "\n\n" . $event_cat_msg2;
+				$cal_msg = $event_cat_msg2;
+				if (trim($cal_msg) == "") 
+				{
+				  ec_load_default_messages();
+				  $cal_msg = $ec_default_msg_2;
+				}
+			}
+			// Parsing the template here means we can't use USER-related shortcodes
+			// Main ones which are relevant: MAIL_DATE_START, MAIL_TIME_START, MAIL_DATE_END,
+			//	MAIL_TIME_END, MAIL_TITLE, MAIL_DETAILS, MAIL_CATEGORY, MAIL_LOCATION, 
+			//	MAIL_CONTACT, MAIL_THREAD (maybe). Also MAIL_LINK, MAIL_SHORT_DATE 
+			// Best to strip entities here rather than at entry - handles old events as well
+			$cal_title = html_entity_decode($tp -> parseTemplate($pref['eventpost_mailsubject'], FALSE, $calendar_shortcodes),ENT_QUOTES,CHARSET);
+			$cal_msg = html_entity_decode($tp -> parseTemplate($cal_msg, FALSE, $calendar_shortcodes),ENT_QUOTES,CHARSET);
+		//	  $cal_msg = str_replace("\r","\n",$cal_msg);
+		  
+			// Four cases for the query:
+			//	1. No forced mailshots - based on event_subs table only									Need INNER JOIN
+			//	2. Forced mailshot to members - send to all users (don't care about subscriptions)		Don't need JOIN
+			// 	3. Forced mailshot to group of members - based on user table only						Don't need JOIN
+			//	4. Forced mailshot to group, plus optional subscriptions - use the lot!    				Need LEFT JOIN
+			// (Always block sent to banned members)
+			$manual_subs = (isset($pref['eventpost_asubs']) && ($pref['eventpost_asubs'] == '1'));
+			$subs_fields = '';
+			$subs_join = '';
+			$whereClause = '';
+			$group_clause = '';
+
+			if ($event_cat_force_class != e_UC_MEMBER)
+			{  // Cases 1, 3, 4 (basic query does for case 2)
+				if ((!$event_cat_force_class) || ($manual_subs))
+				{  // Cases 1 & 4 - need to join with event_subs database
+					$subs_fields = ", es.* ";
+					if ($event_cat_force_class) $subs_join = "LEFT"; else $subs_join = "INNER";
+					$subs_join   .= " join #event_subs AS es on u.user_id=es.event_userid ";
+					$whereClause = " es.event_cat='".intval($event_category)."' ";
+					$group_clause = " GROUP BY u.user_id";
+				}
+		
+				if ($event_cat_force_class)
+				{  // cases 3 and 4 - ... and check for involuntary subscribers
+					if ($whereClause) $whereClause .= " OR ";
+					if ($event_cat_force_class == e_UC_ADMIN)
+					{
+						$whereClause .= "(u.user_admin = 1 )";
+					}
+					else
+					{
+						$whereClause .= "find_in_set('".intval($event_cat_force_class)."', u.user_class)";
+//						$forced_regexp = "'(^|,)(".intval($event_cat_force_class).")(,|$)'";
+//						$whereClause .= " (u.user_class REGEXP '".$forced_regexp."') ";
+						$group_clause = " GROUP BY u.user_id";
+					}
+				}
+	
+				if ($whereClause) $whereClause = ' AND ('.$whereClause.' ) ';
+			}   // End of cases 1, 3, 4
+
+			$cal_emilargs = "SELECT u.user_id, u.user_class, u.user_email, u.user_name, u.user_ban, u.user_admin{$subs_fields}
+				from #user AS u {$subs_join}
+			  WHERE u.user_ban = '0' {$whereClause} {$group_clause}";
+			  
+	
+			if ($ec_debug_level >= 2)
+			{
+				subs_log_a_line("\r\n    Email selection query is: ".$cal_emilargs."\r\n",FALSE,TRUE);
+			}
+			if ($num_shots = $sql2->db_Select_gen($cal_emilargs))
+			{
+				subs_log_a_line(" - ".$num_shots." emails found to send\r\n",FALSE,TRUE);
+	
+				while ($cal_emrow = $sql2->db_Fetch())
+				{
+					extract($cal_emrow);
+					if ($ec_debug_level == 0) 
+							$send_result = sendemail($user_email, $cal_title, $cal_msg, $user_name, $pref['eventpost_mailaddress'], $pref['eventpost_mailfrom']); 
+						else
+							$send_result = " **DEBUG**";
+					if ($ec_log_requirement > 1)
+					{
+						subs_log_a_line("      Send to ".$user_id.':'.$user_email." Name: ".$user_name." Result = ".$send_result."\r\n",FALSE,TRUE);
+					}
+				} 
+			} 
+		} // while    
+		if ($ec_log_requirement > 1)
+		{
+		  subs_log_a_line("  Completed emails for ".$shot_type." at ".date("D j M Y G:i:s")."\r\n",TRUE,TRUE);
+		}
+	}
+} 
+
+
+
 ?>
\ No newline at end of file
diff -aruN 1.0.2.src/e107_plugins/chatbox_menu/admin_chatbox.php 1.0.4.src/e107_plugins/chatbox_menu/admin_chatbox.php
--- 1.0.2.src/e107_plugins/chatbox_menu/admin_chatbox.php	2013-10-11 14:02:27.349000028 -0500
+++ 1.0.4.src/e107_plugins/chatbox_menu/admin_chatbox.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,14 +11,14 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/chatbox_menu/admin_chatbox.php $
-|     $Revision: 11678 $
-|     $Id: admin_chatbox.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13085 $
+|     $Id: admin_chatbox.php 13085 2013-03-15 21:37:36Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 require_once("../../class2.php");
 
-if(!getperms("P")) { header("location:".e_BASE."index.php"); exit; }
+if(!isset($pref['plug_installed']['chatbox_menu']) || !getperms("P")) { header("location:".e_BASE."index.php"); exit; }
 
 include_lan(e_PLUGIN."chatbox_menu/languages/".e_LANGUAGE."/".e_LANGUAGE."_config.php");
 
diff -aruN 1.0.2.src/e107_plugins/chatbox_menu/chatbox_menu.php 1.0.4.src/e107_plugins/chatbox_menu/chatbox_menu.php
--- 1.0.2.src/e107_plugins/chatbox_menu/chatbox_menu.php	2013-10-11 14:02:27.350000028 -0500
+++ 1.0.4.src/e107_plugins/chatbox_menu/chatbox_menu.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,9 +11,9 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/chatbox_menu/chatbox_menu.php $
-|     $Revision: 11818 $
-|     $Id: chatbox_menu.php 11818 2010-09-24 09:01:56Z secretr $
-|     $Author: secretr $
+|     $Revision: 13085 $
+|     $Id: chatbox_menu.php 13085 2013-03-15 21:37:36Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 
@@ -48,15 +48,15 @@
 		$nick = trim(preg_replace("#\[.*\]#si", "", $tp -> toDB($_POST['nick'])));
 
 		$cmessage = $_POST['cmessage'];
-		$cmessage = preg_replace("#\[.*?\](.*?)\[/.*?\]#s", "\\1", $cmessage);
+		$cmessage = trim(preg_replace("#\[.*?\](.*?)\[/.*?\]#s", "\\1", $cmessage));
 
 		$fp = new floodprotect;
-		if($fp -> flood("chatbox", "cb_datestamp"))
+		if($fp -> flood('chatbox', 'cb_datestamp'))
 		{
-			if((strlen(trim($cmessage)) < 1000) && trim($cmessage) != "")
+			if((strlen($cmessage) < 1000) && ($cmessage != ''))
 			{
 				$cmessage = $tp -> toDB($cmessage);
-				if($sql -> db_Select("chatbox", "*", "cb_message='$cmessage' AND cb_datestamp+84600>".time()))
+				if($sql -> db_Select('chatbox', '*', "cb_message='{$cmessage}' AND cb_datestamp+84600>".time()))
 				{
 					$emessage = CHATBOX_L17;
 				}
@@ -66,29 +66,30 @@
 					$ip = $e107->getip();
 					if(USER)
 					{
-						$nick = USERID.".".USERNAME;
-						$sql -> db_Update("user", "user_chats=user_chats+1, user_lastpost='".time()."' WHERE user_id='".USERID."' ");
+						$nick = USERID.'.'.USERNAME;
+						$sql -> db_Update('user', "user_chats=user_chats+1, user_lastpost='".time()."' WHERE user_id=".USERID);
 					}
 					else if(!$nick)
 					{
-						$nick = "0.Anonymous";
+						$nick = '0.Anonymous';
 					}
 					else
 					{
-						if($sql -> db_Select("user", "*", "user_name='$nick' ")){
+						if($sql->db_Select('user', '*', "user_name='{$nick}' "))
+						{
 							$emessage = CHATBOX_L1;
 						}
 						else
 						{
-							$nick = "0.".$nick;
+							$nick = '0.'.$nick;
 						}
 					}
 					if(!$emessage)
 					{
-						$sql -> db_Insert("chatbox", "0, '$nick', '$cmessage', '".time()."', '0' , '$ip' ");
-						$edata_cb = array("cmessage" => $cmessage, "ip" => $ip);
-						$e_event -> trigger("cboxpost", $edata_cb);
-						$e107cache->clear("nq_chatbox");
+						$sql -> db_Insert('chatbox', "0, '{$nick}', '{$cmessage}', '".time()."', '0' , '{$ip}' ");
+						$edata_cb = array('cmessage' => $cmessage, 'ip' => $ip);
+						$e_event -> trigger('cboxpost', $edata_cb);
+						$e107cache->clear('nq_chatbox');
 					}
 				}
 			}
@@ -104,7 +105,8 @@
 	}
 }
 
-if(!USER && !$pref['anon_post']){
+if(!USER && !$pref['anon_post'])
+{
 	if($pref['user_reg'])
 	{
 		$texta = "<div style='text-align:center'>".CHATBOX_L3."</div><br /><br />";
@@ -112,7 +114,7 @@
 }
 else
 {
-	$cb_width = (defined("CBWIDTH") ? CBWIDTH : "");
+	$cb_width = (defined('CBWIDTH') ? CBWIDTH : '');
 
 	if($pref['cb_layer'] == 2)
 	{
@@ -146,7 +148,8 @@
 	<input class='button' type='submit' id='chat_submit' name='chat_submit' value='".CHATBOX_L4."' {$oc}/>
 	<input class='button' type='reset' name='reset' value='".CHATBOX_L5."' />";
 
-	if($pref['cb_emote'] && $pref['smiley_activate']){
+	if($pref['cb_emote'] && $pref['smiley_activate'])
+	{
 		$texta .= "
 		<input class='button' type ='button' style='cursor:pointer' size='30' value='".CHATBOX_L14."' onclick=\"expandit('emote')\" />
 		<div style='display:none' id='emote'>".r_emote()."
@@ -156,7 +159,8 @@
 	$texta .="</div>\n</form>\n";
 }
 
-if($emessage != ""){
+if($emessage != "")
+{
 	$texta .= "<div style='text-align:center'><b>".$emessage."</b></div>";
 }
 
diff -aruN 1.0.2.src/e107_plugins/chatbox_menu/chat.php 1.0.4.src/e107_plugins/chatbox_menu/chat.php
--- 1.0.2.src/e107_plugins/chatbox_menu/chat.php	2013-10-11 14:02:27.349000028 -0500
+++ 1.0.4.src/e107_plugins/chatbox_menu/chat.php	2013-09-26 16:49:50.000000000 -0500
@@ -4,19 +4,19 @@
 |     e107 website system
 |
 |     Copyright (C) 2001-2002 Steve Dunstan (jalist@e107.org)
-|     Copyright (C) 2008-2011 e107 Inc (e107.org)
+|     Copyright (C) 2008-2013 e107 Inc (e107.org)
 |
 |
 |     Released under the terms and conditions of the
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/chatbox_menu/chat.php $
-|     $Revision: 12040 $
-|     $Id: chat.php 12040 2011-01-14 18:28:57Z e107steved $
+|     $Revision: 13064 $
+|     $Id: chat.php 13064 2013-01-13 12:06:12Z e107steved $
 |     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
-require_once("../../class2.php");
+require_once('../../class2.php');
 if (!isset($pref['plug_installed']['chatbox_menu']))
 {
 	header('Location: '.e_BASE.'index.php');
@@ -30,7 +30,8 @@
 $sql->db_Select("menus", "*", "menu_name='chatbox_menu'");
 $row = $sql->db_Fetch();
 
-if (!check_class($row['menu_class'])) {
+if (!check_class($row['menu_class'])) 
+{
 	$ns->tablerender(CHATBOX_L23, "<div style='text-align:center'>".CHATBOX_L24."</div>");
 	require_once(FOOTERF);
 	exit;
@@ -75,30 +76,35 @@
 }
 
 // when coming from search.php
-if (strstr(e_QUERY, "fs")) {
-	$cgtm = str_replace(".fs", "", e_QUERY);
+if (strstr(e_QUERY, "fs")) 
+{
+	$cgtm = intval(str_replace(".fs", "", e_QUERY));
 	$fs = TRUE;
 }
 // end search
 
-if (e_QUERY ? $from = e_QUERY : $from = 0);
+if (e_QUERY ? $from = intval(e_QUERY) : $from = 0);
 
-$chat_total = $sql->db_Count("chatbox");
+$chat_total = $sql->db_Count('chatbox');
 
 $qry_where = (CB_MOD ? "1" : "cb_blocked=0");
 
 // when coming from search.php calculate page number
-if ($fs) {
+if ($fs) 
+{
 	$page_count = 0;
 	$row_count = 0;
 	$sql->db_Select("chatbox", "*", "{$qry_where} ORDER BY cb_datestamp DESC");
-	while ($row = $sql -> db_Fetch()) {
-		if ($row['cb_id'] == $cgtm) {
+	while ($row = $sql -> db_Fetch()) 
+	{
+		if ($row['cb_id'] == $cgtm) 
+		{
 			$from = $page_count;
 			break;
 		}
 		$row_count++;
-		if ($row_count == 30) {
+		if ($row_count == 30) 
+		{
 			$row_count = 0;
 			$page_count += 30;
 		}
@@ -161,11 +167,14 @@
 	$ns->tablerender("", $message);
 }
 
+$parms = "{$chat_total},30,{$from},".e_SELF.'?[FROM]';
+$text .= "<div class='nextprev'>".$tp->parseTemplate("{NEXTPREV={$parms}}").'</div>';
+
 $ns->tablerender(CHATBOX_L20, $text);
 
 
-require_once(e_HANDLER."np_class.php");
-$ix = new nextprev("chat.php", $from, 30, $chat_total, CHATBOX_L21);
+//require_once(e_HANDLER."np_class.php");
+//$ix = new nextprev("chat.php", $from, 30, $chat_total, CHATBOX_L21);
 
 require_once(FOOTERF);
-?>
\ No newline at end of file
+?>
diff -aruN 1.0.2.src/e107_plugins/content/admin_content_config.php 1.0.4.src/e107_plugins/content/admin_content_config.php
--- 1.0.2.src/e107_plugins/content/admin_content_config.php	2013-10-11 14:02:27.358000028 -0500
+++ 1.0.4.src/e107_plugins/content/admin_content_config.php	2013-09-26 16:49:50.000000000 -0500
@@ -10,15 +10,15 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/content/admin_content_config.php $
-|     $Revision: 11869 $
-|     $Id: admin_content_config.php 11869 2010-10-09 11:51:49Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13011 $
+|     $Id: admin_content_config.php 13011 2012-10-28 16:26:00Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 
 require_once("../../class2.php");
 
-if(!getperms("P")){header("location:".e_BASE."index.php"); exit; }
+if(!isset($pref['plug_installed']['content']) || !getperms("P")){header("location:".e_BASE."index.php"); exit; }
 $e_sub_cat = 'content';
 $e_wysiwyg = "content_text,cat_text";
 $plugindir = e_PLUGIN."content/";
@@ -435,8 +435,11 @@
 
 
 // ##### Display options --------------------------------------------------------------------------
-function admin_content_config_adminmenu(){
-
+function admin_content_config_adminmenu()
+{
+	global $pref;
+	if (!isset($pref['plug_installed']['content'])) return '';
+	
                 global $sql, $plugintable, $aa;
 
 				//toggle to show categories in admin right hand menu
diff -aruN 1.0.2.src/e107_plugins/content/handlers/content_preset.php 1.0.4.src/e107_plugins/content/handlers/content_preset.php
--- 1.0.2.src/e107_plugins/content/handlers/content_preset.php	2013-10-11 14:02:27.368000028 -0500
+++ 1.0.4.src/e107_plugins/content/handlers/content_preset.php	2013-09-26 16:49:50.000000000 -0500
@@ -1,7 +1,7 @@
 <?php
-/* $Id: content_preset.php 11346 2010-02-17 18:56:14Z secretr $ */
-require_once("../../../class2.php");
-require_once(e_HANDLER."form_handler.php");
+/* $Id: content_preset.php 13079 2013-03-07 21:17:13Z e107steved $ */
+require_once('../../../class2.php');
+require_once(e_HANDLER.'form_handler.php');
 $rs = new form;
 
 include_lan(e_PLUGIN."content/languages/".e_LANGUAGE."/lan_content.php");
@@ -9,64 +9,100 @@
 
 $months = array(CONTENT_ADMIN_DATE_LAN_0, CONTENT_ADMIN_DATE_LAN_1, CONTENT_ADMIN_DATE_LAN_2, CONTENT_ADMIN_DATE_LAN_3, CONTENT_ADMIN_DATE_LAN_4, CONTENT_ADMIN_DATE_LAN_5, CONTENT_ADMIN_DATE_LAN_6, CONTENT_ADMIN_DATE_LAN_7, CONTENT_ADMIN_DATE_LAN_8, CONTENT_ADMIN_DATE_LAN_9, CONTENT_ADMIN_DATE_LAN_10, CONTENT_ADMIN_DATE_LAN_11);
 
-if(isset($_POST['addpreset'])){
-	if(!$_POST['field']){
+$text = '';
+$value = '';
+
+if(isset($_POST['addpreset']))
+{
+	if(!$_POST['field'])
+	{
 		$err = "<br /><b>".CONTENT_PRESET_LAN_0."</b><br /><br />";
-	}else{
-		$err = "";
-		if($_POST['type'] == "text"){
-			if(!($_POST['text_size'] && $_POST['text_maxsize'] && is_numeric($_POST['text_size']) && is_numeric($_POST['text_maxsize'])) ){
-				$err .= "<br /><b>".CONTENT_PRESET_LAN_1."<br />".CONTENT_PRESET_LAN_3."</b><br />";
-			}else{
-				$value = $_POST['field']."^".$_POST['type']."^".$_POST['text_size']."^".$_POST['text_maxsize'];
-			}
-		}
-		if($_POST['type'] == "area"){
-			if(!($_POST['area_cols'] && $_POST['area_rows'] && is_numeric($_POST['area_cols']) && is_numeric($_POST['area_rows'])) ){
-				$err .= "<br /><b>".CONTENT_PRESET_LAN_1."<br />".CONTENT_PRESET_LAN_4."</b><br />";
-			}else{
-				$value = $_POST['field']."^".$_POST['type']."^".$_POST['area_cols']."^".$_POST['area_rows'];
-			}
-		}
-		if($_POST['type'] == "select"){
-			$options = implode("^", $_POST['options']);
-			if(!$_POST['options'][0] && !$_POST['options'][1]){
-				$err .= "<br /><b>".CONTENT_PRESET_LAN_1."<br />".CONTENT_PRESET_LAN_5."</b><br />";
-			}else{
-				$value = $_POST['field']."^".$_POST['type']."^".$options;
-			}
-		}
-		if($_POST['type'] == "date"){
-			if(!($_POST['date_year_from'] && $_POST['date_year_to'] && is_numeric($_POST['date_year_from']) && is_numeric($_POST['date_year_to'])) ){
-				$err .= "<br /><b>".CONTENT_PRESET_LAN_1."<br />".CONTENT_PRESET_LAN_6."</b><br />";
-			}else{
-				$value = $_POST['field']."^".$_POST['type']."^".$_POST['date_year_from']."^".$_POST['date_year_to'];
-			}
-		}
-		if($_POST['type'] == "checkbox"){
-			if(!$_POST['checkbox_value']){
-				$err .= "<br /><b>".CONTENT_PRESET_LAN_1."<br />".CONTENT_PRESET_LAN_20."</b><br />";
-			}else{
-				$value = $_POST['field']."^".$_POST['type']."^".$_POST['checkbox_value'];
-			}
-		}
-		if($_POST['type'] == "radio"){			
-			if(!($_POST['radio_value'] && $_POST['radio_text'] && $_POST['radio_value']!="" && $_POST['radio_text']!="")){
-				$err .= "<br /><b>".CONTENT_PRESET_LAN_1."<br />".CONTENT_PRESET_LAN_19."</b><br />";
-			}else{
-				if(count($_POST['radio_value']) != count($_POST['radio_text'])){
-					$err .= CONTENT_PRESET_LAN_19;
-				}else{
-					for($i=0;$i<count($_POST['radio_text']);$i++){
-						$radio .= $_POST['radio_text'][$i]."^".$_POST['radio_value'][$i]."^";
+	}
+	else
+	{
+		$err = '';
+		$_POST['field'] = $tp->toDB($_POST['field']);
+		switch ($_POST['type'])
+		{
+			case 'text' :
+				if(!($_POST['text_size'] && $_POST['text_maxsize'] && is_numeric($_POST['text_size']) && is_numeric($_POST['text_maxsize'])) )
+				{
+					$err .= "<br /><b>".CONTENT_PRESET_LAN_1."<br />".CONTENT_PRESET_LAN_3."</b><br />";
+				}
+				else
+				{
+					$value = $_POST['field'].'^text^'.intval($_POST['text_size'])."^".intval($_POST['text_maxsize']);
+				}
+				break;
+			case 'area' :
+				if(!($_POST['area_cols'] && $_POST['area_rows'] && is_numeric($_POST['area_cols']) && is_numeric($_POST['area_rows'])) ){
+					$err .= "<br /><b>".CONTENT_PRESET_LAN_1."<br />".CONTENT_PRESET_LAN_4."</b><br />";
+				}
+				else
+				{
+					$value = $_POST['field'].'^area^'.intval($_POST['area_cols'])."^".intval($_POST['area_rows']);
+				}
+				break;
+			case 'select' :
+				$options = implode("^", $_POST['options']);
+				if(!$_POST['options'][0] && !$_POST['options'][1])
+				{
+					$err .= "<br /><b>".CONTENT_PRESET_LAN_1."<br />".CONTENT_PRESET_LAN_5."</b><br />";
+				}
+				else
+				{
+					$value = $_POST['field'].'^select^'.$options;
+				}
+				break;
+			case 'date' :
+				if(!($_POST['date_year_from'] && $_POST['date_year_to'] && is_numeric($_POST['date_year_from']) && is_numeric($_POST['date_year_to'])) )
+				{
+					$err .= "<br /><b>".CONTENT_PRESET_LAN_1."<br />".CONTENT_PRESET_LAN_6."</b><br />";
+				}
+				else
+				{
+					$value = $_POST['field'].'^date^'.intval($_POST['date_year_from']).'^'.intval($_POST['date_year_to']);
+				}
+				break;
+			case 'checkbox' :
+				if(!$_POST['checkbox_value'])
+				{
+					$err .= "<br /><b>".CONTENT_PRESET_LAN_1."<br />".CONTENT_PRESET_LAN_20."</b><br />";
+				}
+				else
+				{
+					$value = $_POST['field'].'^checkbox^'.$_POST['checkbox_value'];
+				}
+				break;
+			case 'radio' :
+				if(!($_POST['radio_value'] && $_POST['radio_text'] && $_POST['radio_value']!="" && $_POST['radio_text']!=""))
+				{
+					$err .= "<br /><b>".CONTENT_PRESET_LAN_1."<br />".CONTENT_PRESET_LAN_19."</b><br />";
+				}
+				else
+				{
+					if(count($_POST['radio_value']) != count($_POST['radio_text']))
+					{
+						$err .= CONTENT_PRESET_LAN_19;
+					}
+					else
+					{
+						for($i=0;$i<count($_POST['radio_text']);$i++)
+						{
+							$radio .= $_POST['radio_text'][$i]."^".$_POST['radio_value'][$i]."^";
+						}
+						$radio = substr($radio,0,-1);
+						$value = $_POST['field'].'^radio^'.$radio;
 					}
-					$radio = substr($radio,0,-1);
-					$value = $_POST['field']."^".$_POST['type']."^".$radio;
 				}
-			}
+				break;
+			default :
+				header('location:'.e_BASE.'index.php');
+				exit();
 		}
 	}
-	if(!$err){
+	if(!$err)
+	{
 		$value = $tp->post_toForm($value);
 
 		$js = "		
@@ -171,39 +207,47 @@
 </head>
 <body onload=self.focus()>";
 
-$qs = explode(".", e_QUERY);
+$opt = '';
+if (e_QUERY)
+{
+	$qs = explode(".", e_QUERY);
+	$opt = $tp->toDB($qs[0]);
+}
+
 
 $text .= "
 <form method='post' action='".e_SELF."?".e_QUERY."'>\n
 <table class='fborder' style='width:350px;'>
 ".($err ? "<tr><td colspan='2' class='err' style='padding-bottom:10px;'>".$err."</td></tr>" : "")."
-<tr><td colspan='2' class='fcaption' style='padding-bottom:10px;'>".CONTENT_PRESET_LAN_8." : ".$qs[0]."</td></tr>
+<tr><td colspan='2' class='fcaption' style='padding-bottom:10px;'>".CONTENT_PRESET_LAN_8." : ".$opt."</td></tr>
 <tr><td class='leftcell'>".CONTENT_PRESET_LAN_9."</td><td>".$rs -> form_text("field", 40, $_POST['field'], 50)."</td></tr>";
 
-if($qs[0] == "text"){
-	$text .= "
-	<tr><td class='leftcell'>".CONTENT_PRESET_LAN_10."</td><td>".$rs -> form_text("text_size", 3, $_POST['text_size'], 3)."</td></tr>
-	<tr><td class='leftcell'>".CONTENT_PRESET_LAN_11."</td><td>".$rs -> form_text("text_maxsize", 3, $_POST['text_maxsize'], 3)."</td></tr>
-	";
-	$example = CONTENT_PRESET_LAN_32."<br /><br />".$rs -> form_text("extext", 40, CONTENT_PRESET_LAN_9."=".CONTENT_PRESET_LAN_32.", ".CONTENT_PRESET_LAN_10."=40, ".CONTENT_PRESET_LAN_11."=10", 100);
-}
-
-if($qs[0] == "area"){
-	$text .= "
-	<tr><td class='leftcell'>".CONTENT_PRESET_LAN_12."</td><td>".$rs -> form_text("area_cols", 3, $_POST['area_cols'], 3)."</td></tr>
-	<tr><td class='leftcell'>".CONTENT_PRESET_LAN_13."</td><td>".$rs -> form_text("area_rows", 3, $_POST['area_rows'], 3)."</td></tr>
-	";
-	$example = CONTENT_PRESET_LAN_32."<br /><br />".$rs -> form_textarea("exarea", 30, 4, "".CONTENT_PRESET_LAN_9."=".CONTENT_PRESET_LAN_32."\n".CONTENT_PRESET_LAN_12."=30\n".CONTENT_PRESET_LAN_13."=4", $form_js = "", $form_style = "", $form_wrap = "", $form_readonly = "", $form_tooltip = "");
-}
-
-if($qs[0] == "date"){
-	$text .= "
-	<tr><td class='leftcell'>".CONTENT_PRESET_LAN_14."</td><td>".$rs -> form_text("date_year_from", 3, $_POST['date_year_from'], 4)."</td></tr>
-	<tr><td class='leftcell'>".CONTENT_PRESET_LAN_15."</td><td>".$rs -> form_text("date_year_to", 3, $_POST['date_year_to'], 4)."</td></tr>
-	";
-	$example = CONTENT_PRESET_LAN_32." ".CONTENT_PRESET_LAN_14." 1990, ".CONTENT_PRESET_LAN_15." 2000<br /><br />
-		".$rs -> form_select_open("exday", "")."
-		".$rs -> form_option(CONTENT_ADMIN_DATE_LAN_12, "0", "");
+switch ($opt)
+{
+	case 'text' :
+		$text .= "
+		<tr><td class='leftcell'>".CONTENT_PRESET_LAN_10."</td><td>".$rs -> form_text("text_size", 3, $_POST['text_size'], 3)."</td></tr>
+		<tr><td class='leftcell'>".CONTENT_PRESET_LAN_11."</td><td>".$rs -> form_text("text_maxsize", 3, $_POST['text_maxsize'], 3)."</td></tr>
+		";
+		$example = CONTENT_PRESET_LAN_32."<br /><br />".$rs -> form_text("extext", 40, CONTENT_PRESET_LAN_9."=".CONTENT_PRESET_LAN_32.", ".CONTENT_PRESET_LAN_10."=40, ".CONTENT_PRESET_LAN_11."=10", 100);
+		break;
+
+	case 'area' :
+		$text .= "
+		<tr><td class='leftcell'>".CONTENT_PRESET_LAN_12."</td><td>".$rs -> form_text("area_cols", 3, $_POST['area_cols'], 3)."</td></tr>
+		<tr><td class='leftcell'>".CONTENT_PRESET_LAN_13."</td><td>".$rs -> form_text("area_rows", 3, $_POST['area_rows'], 3)."</td></tr>
+		";
+		$example = CONTENT_PRESET_LAN_32."<br /><br />".$rs -> form_textarea("exarea", 30, 4, "".CONTENT_PRESET_LAN_9."=".CONTENT_PRESET_LAN_32."\n".CONTENT_PRESET_LAN_12."=30\n".CONTENT_PRESET_LAN_13."=4", $form_js = "", $form_style = "", $form_wrap = "", $form_readonly = "", $form_tooltip = "");
+		break;
+
+	case 'date' :
+		$text .= "
+		<tr><td class='leftcell'>".CONTENT_PRESET_LAN_14."</td><td>".$rs -> form_text("date_year_from", 3, $_POST['date_year_from'], 4)."</td></tr>
+		<tr><td class='leftcell'>".CONTENT_PRESET_LAN_15."</td><td>".$rs -> form_text("date_year_to", 3, $_POST['date_year_to'], 4)."</td></tr>
+		";
+		$example = CONTENT_PRESET_LAN_32." ".CONTENT_PRESET_LAN_14." 1990, ".CONTENT_PRESET_LAN_15." 2000<br /><br />
+			".$rs -> form_select_open("exday", "")."
+			".$rs -> form_option(CONTENT_ADMIN_DATE_LAN_12, "0", "");
 		for($i=1;$i<=31;$i++){
 			$example .= $rs -> form_option($i, ($values[$tmp[0]]['day'] == $i ? "1" : "0"), $i, "");
 		}
@@ -222,54 +266,58 @@
 			$example .= $rs -> form_option($i, "0", $i, "");
 		}
 		$example .= $rs -> form_select_close();
-}
+		break;
 
-if($qs[0] == "select"){
-	$text .= "
-	<tr><td class='leftcell' style='vertical-align:top;'>".CONTENT_PRESET_LAN_23."</td>
-		<td><input class='tbox' type='text' name='options[0]' size='10' maxlength='100' /> (".CONTENT_PRESET_LAN_24.")</td>
-	</tr>
-	<tr><td class='leftcell' style='vertical-align:top;'>".CONTENT_PRESET_LAN_16."</td>
-		<td>
-		<div id='select_container' style='width:40%;white-space:nowrap;'>
-		<span id='selectline' style='white-space:nowrap;'>
-			<input class='tbox' type='text' name='options[]' size='10' maxlength='100' />
-		<input type='button' class='button' value='".CONTENT_PRESET_LAN_17."' onclick=\"duplicateHTML('selectline','select_container');\"  />
-		</span><br />
-		</div>
-	</td></tr>
-	";
-	$example = CONTENT_PRESET_LAN_32." ".CONTENT_PRESET_LAN_23." = ".CONTENT_PRESET_LAN_32.", options=a,b,c<br /><br />
-		".$rs -> form_select_open("exselect", "");
+	case 'select' :
+		$text .= "
+		<tr><td class='leftcell' style='vertical-align:top;'>".CONTENT_PRESET_LAN_23."</td>
+			<td><input class='tbox' type='text' name='options[0]' size='10' maxlength='100' /> (".CONTENT_PRESET_LAN_24.")</td>
+		</tr>
+		<tr><td class='leftcell' style='vertical-align:top;'>".CONTENT_PRESET_LAN_16."</td>
+			<td>
+			<div id='select_container' style='width:40%;white-space:nowrap;'>
+			<span id='selectline' style='white-space:nowrap;'>
+				<input class='tbox' type='text' name='options[]' size='10' maxlength='100' />
+			<input type='button' class='button' value='".CONTENT_PRESET_LAN_17."' onclick=\"duplicateHTML('selectline','select_container');\"  />
+			</span><br />
+			</div>
+		</td></tr>
+		";
+		$example = CONTENT_PRESET_LAN_32." ".CONTENT_PRESET_LAN_23." = ".CONTENT_PRESET_LAN_32.", options=a,b,c<br /><br />
+			".$rs -> form_select_open("exselect", "");
 		$example .= $rs -> form_option(CONTENT_PRESET_LAN_32, "0", "", "");
 		$example .= $rs -> form_option("a", "0", "a", "");
 		$example .= $rs -> form_option("b", "0", "b", "");
 		$example .= $rs -> form_option("c", "0", "c", "");
 		$example .= $rs -> form_select_close();
+		break;
+
+
+	case 'checkbox' :
+		$text .= "<tr><td class='leftcell'>".CONTENT_PRESET_LAN_22."</td><td>".$rs -> form_text("checkbox_value", 3, $_POST['checkbox_value'], 50)."</td></tr>";
+		$example = CONTENT_PRESET_LAN_32." ".CONTENT_PRESET_LAN_9." = ".CONTENT_PRESET_LAN_32.", ".CONTENT_PRESET_LAN_22." = 1<br /><br />".CONTENT_PRESET_LAN_32." ".$rs -> form_checkbox("excheckbox", "ex1", $form_checked = 0, $form_tooltip = "", $form_js = "");
+		break;
+	case 'radio' :
+		$text .= "
+		<tr><td class='leftcell'></td>
+			<td>
+			<div id='radio_container' style='width:40%;white-space:nowrap;'>
+			<span id='radioline' style='white-space:nowrap;'>
+				".CONTENT_PRESET_LAN_21." <input class='tbox' type='text' name='radio_text[]' value='".$_POST['radio_text[]']."' size='8' maxlength='100' />
+				".CONTENT_PRESET_LAN_22." <input class='tbox' type='text' name='radio_value[]' value='".$_POST['radio_value[]']."' size='2' maxlength='100' />
+			<input type='button' class='button' value='".CONTENT_PRESET_LAN_17."' onclick=\"duplicateHTML('radioline','radio_container');\"  />
+			</span><br />
+			</div>
+		</td></tr>
+		";
+		$example = CONTENT_PRESET_LAN_32."<br /><br />".$rs -> form_radio("exradio", CONTENT_PRESET_LAN_32." 1", "0", "", "")." ".CONTENT_PRESET_LAN_32." 1 ".$rs -> form_radio("exradio", CONTENT_PRESET_LAN_32." 2", "0", "", "")." ".CONTENT_PRESET_LAN_32." 2";
+		break;
 }
-if($qs[0] == "checkbox"){
-	$text .= "<tr><td class='leftcell'>".CONTENT_PRESET_LAN_22."</td><td>".$rs -> form_text("checkbox_value", 3, $_POST['checkbox_value'], 50)."</td></tr>";
-	$example = CONTENT_PRESET_LAN_32." ".CONTENT_PRESET_LAN_9." = ".CONTENT_PRESET_LAN_32.", ".CONTENT_PRESET_LAN_22." = 1<br /><br />".CONTENT_PRESET_LAN_32." ".$rs -> form_checkbox("excheckbox", "ex1", $form_checked = 0, $form_tooltip = "", $form_js = "");
-}
-if($qs[0] == "radio"){
-	$text .= "
-	<tr><td class='leftcell'></td>
-		<td>
-		<div id='radio_container' style='width:40%;white-space:nowrap;'>
-		<span id='radioline' style='white-space:nowrap;'>
-			".CONTENT_PRESET_LAN_21." <input class='tbox' type='text' name='radio_text[]' value='".$_POST['radio_text[]']."' size='8' maxlength='100' />
-			".CONTENT_PRESET_LAN_22." <input class='tbox' type='text' name='radio_value[]' value='".$_POST['radio_value[]']."' size='2' maxlength='100' />
-		<input type='button' class='button' value='".CONTENT_PRESET_LAN_17."' onclick=\"duplicateHTML('radioline','radio_container');\"  />
-		</span><br />
-		</div>
-	</td></tr>
-	";
-	$example = CONTENT_PRESET_LAN_32."<br /><br />".$rs -> form_radio("exradio", CONTENT_PRESET_LAN_32." 1", "0", "", "")." ".CONTENT_PRESET_LAN_32." 1 ".$rs -> form_radio("exradio", CONTENT_PRESET_LAN_32." 2", "0", "", "")." ".CONTENT_PRESET_LAN_32." 2";
-}
+
 
 //process button
 $text .= "
-<tr><td class='leftcell'>&nbsp;</td><td style='text-align:right;'><input type='hidden' name='type' value='".$qs[0]."' /><input type='submit' class='button' name='addpreset' value='".CONTENT_PRESET_LAN_18."' /><br /><br /></td></tr>\n
+<tr><td class='leftcell'>&nbsp;</td><td style='text-align:right;'><input type='hidden' name='type' value='".$opt."' /><input type='submit' class='button' name='addpreset' value='".CONTENT_PRESET_LAN_18."' /><br /><br /></td></tr>\n
 <tr><td colspan='2' class='example'>".$example."</td></tr>
 </table>\n
 </form>\n
diff -aruN 1.0.2.src/e107_plugins/featurebox/admin_config.php 1.0.4.src/e107_plugins/featurebox/admin_config.php
--- 1.0.2.src/e107_plugins/featurebox/admin_config.php	2013-10-11 14:02:27.385000028 -0500
+++ 1.0.4.src/e107_plugins/featurebox/admin_config.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,13 +11,13 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/featurebox/admin_config.php $
-|     $Revision: 11678 $
-|     $Id: admin_config.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13011 $
+|     $Id: admin_config.php 13011 2012-10-28 16:26:00Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 require_once("../../class2.php");
-if (!getperms("P")) {
+if (!isset($pref['plug_installed']['featurebox']) || !getperms("P")) {
 	header("location:".e_BASE."index.php");
 	 exit;
 }
diff -aruN 1.0.2.src/e107_plugins/forum/forum_admin.php 1.0.4.src/e107_plugins/forum/forum_admin.php
--- 1.0.2.src/e107_plugins/forum/forum_admin.php	2013-10-11 14:02:27.390000028 -0500
+++ 1.0.4.src/e107_plugins/forum/forum_admin.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,9 +11,9 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/forum/forum_admin.php $
-|     $Revision: 12497 $
-|     $Id: forum_admin.php 12497 2012-01-01 05:46:54Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13011 $
+|     $Id: forum_admin.php 13011 2012-10-28 16:26:00Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 $eplug_admin = true;
@@ -25,7 +25,7 @@
 require_once("../../class2.php");
 include_lan(e_PLUGIN.'forum/languages/'.e_LANGUAGE.'/lan_forum_admin.php');
 
-if (!getperms("P"))
+if (!isset($pref['plug_installed']['forum']) || !getperms("P"))
 {
 	header("location:".e_BASE."index.php");
 	exit;
@@ -1561,6 +1561,8 @@
 	{
 		global $forum;
 		global $action;
+		global $pref;
+		if (!isset($pref['plug_installed']['forum'])) return '';
 		$forum->show_options($action);
 	}
 	?>
diff -aruN 1.0.2.src/e107_plugins/gsitemap/admin_config.php 1.0.4.src/e107_plugins/gsitemap/admin_config.php
--- 1.0.2.src/e107_plugins/gsitemap/admin_config.php	2013-10-11 14:02:27.417000028 -0500
+++ 1.0.4.src/e107_plugins/gsitemap/admin_config.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,13 +11,13 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/gsitemap/admin_config.php $
-|     $Revision: 12938 $
-|     $Id: admin_config.php 12938 2012-08-10 03:57:15Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13011 $
+|     $Id: admin_config.php 13011 2012-10-28 16:26:00Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 require_once("../../class2.php");
-if(!getperms("P"))
+if(!isset($pref['plug_installed']['gsitemap']) || !getperms("P"))
 {
 	header("location:".e_BASE."index.php"); 
 	exit;
diff -aruN 1.0.2.src/e107_plugins/links_page/admin_linkspage_config.php 1.0.4.src/e107_plugins/links_page/admin_linkspage_config.php
--- 1.0.2.src/e107_plugins/links_page/admin_linkspage_config.php	2013-10-11 14:02:27.422000028 -0500
+++ 1.0.4.src/e107_plugins/links_page/admin_linkspage_config.php	2013-09-26 16:49:50.000000000 -0500
@@ -10,14 +10,14 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/links_page/admin_linkspage_config.php $
-|     $Revision: 12570 $
-|     $Id: admin_linkspage_config.php 12570 2012-01-21 16:42:48Z e107steved $
+|     $Revision: 13011 $
+|     $Id: admin_linkspage_config.php 13011 2012-10-28 16:26:00Z e107steved $
 |     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 
 require_once('../../class2.php');
-if (!getperms('P')) 
+if (!isset($pref['plug_installed']['links_page']) || !getperms('P')) 
 {
 	header('location:'.e_BASE.'index.php');
 	exit();
@@ -247,7 +247,9 @@
 // ##### Display options --------------------------------------------------------------------------
 function admin_linkspage_config_adminmenu()
 {
-	global $qs, $sql;
+	global $qs, $sql, $pref;
+	if (!isset($pref['plug_installed']['links_page'])) return '';
+	
 	$act = varset($qs[0],'cat');
 	if($act == 'cat' && isset($qs[1]))
 	{
diff -aruN 1.0.2.src/e107_plugins/linkwords/admin_config.php 1.0.4.src/e107_plugins/linkwords/admin_config.php
--- 1.0.2.src/e107_plugins/linkwords/admin_config.php	2013-10-11 14:02:27.430000028 -0500
+++ 1.0.4.src/e107_plugins/linkwords/admin_config.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,13 +11,13 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/linkwords/admin_config.php $
-|     $Revision: 11678 $
-|     $Id: admin_config.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13011 $
+|     $Id: admin_config.php 13011 2012-10-28 16:26:00Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 require_once("../../class2.php");
-if (!getperms("P")) {
+if (!isset($pref['plug_installed']['linkwords']) || !getperms("P")) {
 	header("location:".e_BASE."index.php");
 	 exit ;
 }
@@ -282,6 +282,9 @@
 
 function admin_config_adminmenu()
 {
+	global $pref;
+	if (!isset($pref['plug_installed']['linkwords'])) return '';
+	
   if (e_QUERY) 
   {
 	$tmp = explode(".", e_QUERY);
diff -aruN 1.0.2.src/e107_plugins/list_new/admin_list_config.php 1.0.4.src/e107_plugins/list_new/admin_list_config.php
--- 1.0.2.src/e107_plugins/list_new/admin_list_config.php	2013-10-11 14:02:27.432000028 -0500
+++ 1.0.4.src/e107_plugins/list_new/admin_list_config.php	2013-09-26 16:49:50.000000000 -0500
@@ -10,15 +10,20 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/list_new/admin_list_config.php $
-|     $Revision: 11678 $
-|     $Id: admin_list_config.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13011 $
+|     $Id: admin_list_config.php 13011 2012-10-28 16:26:00Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 
 //include and require several classes
 require_once("../../class2.php");
-if(!getperms("1")){ header("location:".e_BASE."index.php"); exit ;}
+if(!isset($pref['plug_installed']['list_new']) || !getperms("1"))
+{ 
+	header("location:".e_BASE."index.php"); 
+	exit ;
+}
+
 require_once(e_ADMIN."auth.php");
 require_once(e_HANDLER."form_handler.php");
 $rs = new form;
@@ -527,7 +532,10 @@
 
 
 // ##### Display options --------------------------------------------------------------------------
-function admin_list_config_adminmenu(){
+function admin_list_config_adminmenu()
+{
+	global $pref;
+	if (!isset($pref['plug_installed']['list_new'])) return '';
 
 				$act = "";
 				unset($var);
diff -aruN 1.0.2.src/e107_plugins/log/admin_config.php 1.0.4.src/e107_plugins/log/admin_config.php
--- 1.0.2.src/e107_plugins/log/admin_config.php	2013-10-11 14:02:27.437000028 -0500
+++ 1.0.4.src/e107_plugins/log/admin_config.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,13 +11,13 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/log/admin_config.php $
-|     $Revision: 12153 $
-|     $Id: admin_config.php 12153 2011-04-20 21:23:45Z e107steved $
+|     $Revision: 13011 $
+|     $Id: admin_config.php 13011 2012-10-28 16:26:00Z e107steved $
 |     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 require_once("../../class2.php");
-if (!getperms("P")) 
+if (!isset($pref['plug_installed']['log']) || !getperms("P")) 
 {
 	header("location:../../index.php");
 	exit;
diff -aruN 1.0.2.src/e107_plugins/login_menu/login_menu.php 1.0.4.src/e107_plugins/login_menu/login_menu.php
--- 1.0.2.src/e107_plugins/login_menu/login_menu.php	2013-10-11 14:02:27.455000028 -0500
+++ 1.0.4.src/e107_plugins/login_menu/login_menu.php	2013-09-26 16:49:50.000000000 -0500
@@ -10,8 +10,8 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/login_menu/login_menu.php $
-|     $Revision: 11760 $
-|     $Id: login_menu.php 11760 2010-09-07 17:02:27Z e107steved $
+|     $Revision: 13069 $
+|     $Id: login_menu.php 13069 2013-01-24 20:51:28Z e107steved $
 |     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
@@ -19,7 +19,7 @@
 /**
 *	@package e107
 *	@subpackage	login_menu
-*	@version $Id: login_menu.php 11760 2010-09-07 17:02:27Z e107steved $;
+*	@version $Id: login_menu.php 13069 2013-01-24 20:51:28Z e107steved $;
 *
 */
 if (!defined('e107_INIT')) { exit; }
@@ -159,7 +159,7 @@
 			{
 				if(isset($pref['plug_installed']['list_new']))
 				{
-					$text .= '<br /><a href="'.e_PLUGIN.'list_new/list.php?new">'.LOGIN_MENU_L24.'</a>';
+					$text .= '<br /><a href="'.e_PLUGIN_ABS.'list_new/list.php?new">'.LOGIN_MENU_L24.'</a>';
 				}
 			}
 		}
diff -aruN 1.0.2.src/e107_plugins/newforumposts_main/newforumposts_main.php 1.0.4.src/e107_plugins/newforumposts_main/newforumposts_main.php
--- 1.0.2.src/e107_plugins/newforumposts_main/newforumposts_main.php	2013-10-11 14:02:27.457000028 -0500
+++ 1.0.4.src/e107_plugins/newforumposts_main/newforumposts_main.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,9 +11,9 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/newforumposts_main/newforumposts_main.php $
-|     $Revision: 11849 $
-|     $Id: newforumposts_main.php 11849 2010-10-05 07:13:09Z e107steved $
-|     $Author: e107steved $
+|     $Revision: 13089 $
+|     $Id: newforumposts_main.php 13089 2013-04-08 15:45:08Z nlstart $
+|     $Author: nlstart $
 +----------------------------------------------------------------------------+
 */
 if (!defined('e107_INIT')) { exit; }
@@ -23,7 +23,7 @@
 include_lan(e_PLUGIN.'newforumposts_main/languages/'.e_LANGUAGE.'.php');
 
 $path = e_PLUGIN.'forum/';
-global $sql, $ns;
+global $sql, $ns, $pref;
 // get template ...
 
 if (file_exists(THEME.'newforumpost.php')) {
@@ -83,16 +83,6 @@
 	$gen = new convert;
 }
 
-/* // Deprecated method to indicate new forum posts
-if (file_exists(THEME."forum/new_small.png")) 
-{
-  $ICON = "<img src='".THEME."forum/new_small.png' alt='' />";
-}
-else
-{
-  $ICON = "<img src='".e_PLUGIN_ABS."forum/images/".IMODE."/new_small.png' alt='' />";
-}
-*/
 $TOTAL_TOPICS = $sql->db_Count("forum_t", "(*)", " WHERE thread_parent=0 ");
 $TOTAL_REPLIES = $sql->db_Count("forum_t", "(*)", " WHERE thread_parent!=0 ");
 $sql->db_Select_gen("SELECT sum(thread_views) FROM ".MPREFIX."forum_t");
@@ -190,8 +180,13 @@
 			$iconalt = NFPM_L24;
 		}
 	}
-	
-	$ICON = "<img src='".e_PLUGIN_ABS."forum/images/".IMODE."/". $iconfile. "' alt='".$iconalt."' title='".$iconalt."' />";
+
+	$icon_path = e_PLUGIN_ABS."forum/images/".IMODE."/";
+	if(file_exists(THEME."forum/".$iconfile))
+	{
+		$icon_path = THEME."forum/";
+	}
+	$ICON = "<img src='".$icon_path.$iconfile."' alt='".$iconalt."' title='".$iconalt."' />";
 	$x = explode(chr(1), $thread_user);
 	$tmp = explode(".", $x[0], 2);
 	if($user_name)
diff -aruN 1.0.2.src/e107_plugins/newsfeed/admin_config.php 1.0.4.src/e107_plugins/newsfeed/admin_config.php
--- 1.0.2.src/e107_plugins/newsfeed/admin_config.php	2013-10-11 14:02:27.457000028 -0500
+++ 1.0.4.src/e107_plugins/newsfeed/admin_config.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,13 +11,13 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/newsfeed/admin_config.php $
-|     $Revision: 11678 $
-|     $Id: admin_config.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13011 $
+|     $Id: admin_config.php 13011 2012-10-28 16:26:00Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 require_once("../../class2.php");
-if (!getperms("P")) 
+if (!isset($pref['plug_installed']['newsfeed']) || !getperms("P")) 
 {
   header("location:".e_BASE."index.php");
   exit;
diff -aruN 1.0.2.src/e107_plugins/newsletter/admin_config.php 1.0.4.src/e107_plugins/newsletter/admin_config.php
--- 1.0.2.src/e107_plugins/newsletter/admin_config.php	2013-10-11 14:02:27.461000028 -0500
+++ 1.0.4.src/e107_plugins/newsletter/admin_config.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,19 +11,22 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/newsletter/admin_config.php $
-|     $Revision: 11678 $
-|     $Id: admin_config.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13060 $
+|     $Id: admin_config.php 13060 2012-12-22 20:58:49Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 require_once('../../class2.php');
-if (!getperms("P")) 
+if (!isset($pref['plug_installed']['newsletter']) || !getperms('P')) 
 {
 	header('location:'.e_BASE.'index.php');
 	exit;
 }
 $e_sub_cat = 'newsletter';
-require_once(e_ADMIN."auth.php");
+
+$nl = new newsletter;			// This needs to be before 'auth.php' to work with some themes
+
+require_once(e_ADMIN.'auth.php');
 
 if (e_QUERY) 
 {
@@ -37,8 +40,6 @@
 	$id = FALSE;
 }
 
-$nl = new newsletter;
-
 
 if(!e_QUERY)
 {
diff -aruN 1.0.2.src/e107_plugins/pdf/admin_pdf_config.php 1.0.4.src/e107_plugins/pdf/admin_pdf_config.php
--- 1.0.2.src/e107_plugins/pdf/admin_pdf_config.php	2013-10-11 14:02:27.465000028 -0500
+++ 1.0.4.src/e107_plugins/pdf/admin_pdf_config.php	2013-09-26 16:49:50.000000000 -0500
@@ -10,13 +10,19 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/pdf/admin_pdf_config.php $
-|     $Revision: 11678 $
-|     $Id: admin_pdf_config.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13011 $
+|     $Id: admin_pdf_config.php 13011 2012-10-28 16:26:00Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 
 require_once("../../class2.php");
+if (!isset($pref['plug_installed']['pdf']) || !getperms("P")) 
+{
+	header('location:'.e_BASE.'index.php');
+	exit;
+}
+
 require_once(e_ADMIN."auth.php");
 require_once(e_HANDLER."form_handler.php");
 $rs = new form;
diff -aruN 1.0.2.src/e107_plugins/pm/pm_conf.php 1.0.4.src/e107_plugins/pm/pm_conf.php
--- 1.0.2.src/e107_plugins/pm/pm_conf.php	2013-10-11 14:02:27.481000028 -0500
+++ 1.0.4.src/e107_plugins/pm/pm_conf.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,9 +11,9 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/pm/pm_conf.php $
-|     $Revision: 11678 $
-|     $Id: pm_conf.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13011 $
+|     $Id: pm_conf.php 13011 2012-10-28 16:26:00Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 $retrieve_prefs[] = 'pm_prefs';
@@ -23,7 +23,7 @@
 require_once(e_HANDLER.'userclass_class.php');
 require_once(e_HANDLER.'form_handler.php');
 
-if (!getperms("P"))
+if (!isset($pref['plug_installed']['pm']) || !getperms("P"))
 {
 	header('location:'.e_BASE.'index.php');
 	exit;
@@ -346,7 +346,9 @@
 
 function show_menu($action)
 {
-	global $sql;
+	global $sql, $pref;
+	if (!isset($pref['plug_installed']['pm'])) return '';
+
 	if ($action == "") { $action = "main"; }
 	$var['main']['text'] = ADLAN_PM_54;
 	$var['main']['link'] = e_SELF;
diff -aruN 1.0.2.src/e107_plugins/poll/admin_config.php 1.0.4.src/e107_plugins/poll/admin_config.php
--- 1.0.2.src/e107_plugins/poll/admin_config.php	2013-10-11 14:02:27.483000028 -0500
+++ 1.0.4.src/e107_plugins/poll/admin_config.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,14 +11,15 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/poll/admin_config.php $
-|     $Revision: 11678 $
-|     $Id: admin_config.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13011 $
+|     $Id: admin_config.php 13011 2012-10-28 16:26:00Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 require_once("../../class2.php");
 if (!is_object($tp)) $tp = new e_parse;
-if (!getperms("P")) {
+if (!isset($pref['plug_installed']['poll']) || !getperms("P")) 
+{
 	header("location:".e_BASE."index.php");
 	exit;
 }
diff -aruN 1.0.2.src/e107_plugins/powered_by_menu/powered_by_menu.php 1.0.4.src/e107_plugins/powered_by_menu/powered_by_menu.php
--- 1.0.2.src/e107_plugins/powered_by_menu/powered_by_menu.php	2013-10-11 14:02:27.488000028 -0500
+++ 1.0.4.src/e107_plugins/powered_by_menu/powered_by_menu.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,8 +11,8 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/powered_by_menu/powered_by_menu.php $
-|     $Revision: 12477 $
-|     $Id: powered_by_menu.php 12477 2011-12-28 03:12:22Z e107coders $
+|     $Revision: 13103 $
+|     $Id: powered_by_menu.php 13103 2013-04-26 22:36:04Z e107coders $
 |     $Author: e107coders $
 +----------------------------------------------------------------------------+
 */
@@ -20,7 +20,7 @@
 
 $text = "
 <div style='text-align: center'>
-	<a href='http://e107.org/' rel='external'><img src='".e_PLUGIN_ABS."powered_by_menu/images/powered.png' alt='e107' style='border: 0px;' /></a>
+	<a href='http://e107.org/' rel='external'><img src='".e_PLUGIN_ABS."powered_by_menu/images/powered.png' alt='e107' style='max-width:100%;border: 0px;' /></a>
 </div>
 ";
 $ns -> tablerender(POWEREDBY_L1,  $text, 'powered_by');
diff -aruN 1.0.2.src/e107_plugins/rss_menu/admin_prefs.php 1.0.4.src/e107_plugins/rss_menu/admin_prefs.php
--- 1.0.2.src/e107_plugins/rss_menu/admin_prefs.php	2013-10-11 14:02:27.488000028 -0500
+++ 1.0.4.src/e107_plugins/rss_menu/admin_prefs.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,9 +11,9 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/rss_menu/admin_prefs.php $
-|     $Revision: 11678 $
-|     $Id: admin_prefs.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13011 $
+|     $Id: admin_prefs.php 13011 2012-10-28 16:26:00Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 /*
@@ -29,7 +29,11 @@
 */
 
 require_once("../../class2.php");
-if(!getperms("P")){ header("location:".e_BASE."index.php"); exit(); }
+if(!isset($pref['plug_installed']['rss_menu']) || !getperms("P"))
+{ 
+	header("location:".e_BASE."index.php"); 
+	exit(); 
+}
 
 include_lan(e_PLUGIN.'rss_menu/languages/'.e_LANGUAGE.'.php');
 
diff -aruN 1.0.2.src/e107_plugins/trackback/admin_config.php 1.0.4.src/e107_plugins/trackback/admin_config.php
--- 1.0.2.src/e107_plugins/trackback/admin_config.php	2013-10-11 14:02:27.494000028 -0500
+++ 1.0.4.src/e107_plugins/trackback/admin_config.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,13 +11,13 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/trackback/admin_config.php $
-|     $Revision: 11678 $
-|     $Id: admin_config.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13011 $
+|     $Id: admin_config.php 13011 2012-10-28 16:26:00Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 require_once("../../class2.php");
-if (!getperms("P")) {
+if (!isset($pref['plug_installed']['trackback']) || !getperms("P")) {
 	header("location:".e_BASE."index.php");
 	 exit ;
 }
diff -aruN 1.0.2.src/e107_plugins/tree_menu/config.php 1.0.4.src/e107_plugins/tree_menu/config.php
--- 1.0.2.src/e107_plugins/tree_menu/config.php	2013-10-11 14:02:27.496000028 -0500
+++ 1.0.4.src/e107_plugins/tree_menu/config.php	2013-09-26 16:49:50.000000000 -0500
@@ -10,9 +10,9 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/tree_menu/config.php $
-|     $Revision: 11678 $
-|     $Id: config.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13011 $
+|     $Id: config.php 13011 2012-10-28 16:26:00Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 
@@ -20,7 +20,7 @@
 require_once("../../class2.php");
 include_lan(e_PLUGIN."tree_menu/languages/".e_LANGUAGE.".php");
 
-if (!getperms("4")) {
+if (!isset($pref['plug_installed']['tree_menu']) || !getperms("4")) {
 	header("location:".e_BASE."index.php");
 	exit ;
 }
diff -aruN 1.0.2.src/e107_plugins/usertheme_menu/config.php 1.0.4.src/e107_plugins/usertheme_menu/config.php
--- 1.0.2.src/e107_plugins/usertheme_menu/config.php	2013-10-11 14:02:27.498000028 -0500
+++ 1.0.4.src/e107_plugins/usertheme_menu/config.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,9 +11,9 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/usertheme_menu/config.php $
-|     $Revision: 11678 $
-|     $Id: config.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13075 $
+|     $Id: config.php 13075 2013-02-20 21:30:13Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 $eplug_admin = TRUE;
@@ -22,7 +22,8 @@
 require_once(e_HANDLER.'userclass_class.php');
 
 
-if (!getperms("2")) 		// Same permissions as menu configuration
+//if (!isset($pref['plug_installed']['usertheme_menu']) || !getperms("2")) 		// Same permissions as menu configuration
+if (!getperms("2")) 		// Same permissions as menu configuration (this never gets 'installed')
 {
 	header("location:".e_BASE."index.php");
 	exit ;
diff -aruN 1.0.2.src/e107_plugins/usertheme_menu/usertheme_menu.php 1.0.4.src/e107_plugins/usertheme_menu/usertheme_menu.php
--- 1.0.2.src/e107_plugins/usertheme_menu/usertheme_menu.php	2013-10-11 14:02:27.498000028 -0500
+++ 1.0.4.src/e107_plugins/usertheme_menu/usertheme_menu.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,9 +11,9 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_plugins/usertheme_menu/usertheme_menu.php $
-|     $Revision: 11678 $
-|     $Id: usertheme_menu.php 11678 2010-08-22 00:43:45Z e107coders $
-|     $Author: e107coders $
+|     $Revision: 13075 $
+|     $Id: usertheme_menu.php 13075 2013-02-20 21:30:13Z e107steved $
+|     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
 
@@ -44,7 +44,7 @@
 	if (count($themelist))
 	{
 		$defaulttheme = $pref['sitetheme'];
-		$count = 0;
+		$themecount[$defaulttheme] = 0;
 
 		$totalct = $sql->db_Select("user", "user_prefs", "user_prefs REGEXP('sitetheme') ");
  
diff -aruN 1.0.2.src/e107_themes/core/admin_style.css 1.0.4.src/e107_themes/core/admin_style.css
--- 1.0.2.src/e107_themes/core/admin_style.css	2013-10-11 14:02:27.499000028 -0500
+++ 1.0.4.src/e107_themes/core/admin_style.css	2013-09-26 16:49:50.000000000 -0500
@@ -169,9 +169,9 @@
 .menuItem .header a { border-bottom:1px solid #b3b3b3; }
 
 /* XXX These Are required */
-.sc-imageselector { min-width: 345px; max-width: 700px; width: 30%; }
-select.bb-preimageselect { min-width: 345px; max-width: 700px; width: 30%; }
-table.bb-preimageselect { -moz-box-shadow: 2px 2px 4px #999; -webkit-box-shadow: 2px 2px 4px #999; box-shadow: 2px 2px 4px #999; }
+.admin_main_col select.sc-imageselector { min-width: 345px; max-width: 80%; width: auto; !important;  }
+.admin_main_col select.bb-preimageselect { min-width: 345px; max-width: 700px; width: 30%; }
+.admin_main_col table.bb-preimageselect { -moz-box-shadow: 2px 2px 4px #999; -webkit-box-shadow: 2px 2px 4px #999; box-shadow: 2px 2px 4px #999; }
 
 #new-version { color:#FFCC00; width:250px; padding:5px; float:right; margin-left:50px;margin-top:10px; }
 #new-version-caption {font-weight:bold}
diff -aruN 1.0.2.src/e107_themes/templates/footer_default.php 1.0.4.src/e107_themes/templates/footer_default.php
--- 1.0.2.src/e107_themes/templates/footer_default.php	2013-10-11 14:02:27.556000028 -0500
+++ 1.0.4.src/e107_themes/templates/footer_default.php	2013-09-26 16:49:50.000000000 -0500
@@ -9,7 +9,7 @@
 * Default footer for user pages
 *
 * $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/e107_themes/templates/footer_default.php $
-* $Id: footer_default.php 12938 2012-08-10 03:57:15Z e107coders $
+* $Id: footer_default.php 13102 2013-04-25 23:10:19Z e107coders $
 *
 */
 
@@ -237,6 +237,7 @@
 //
 // I Send the buffered page data, along with appropriate headers
 //
+header("X-Powered-By: e107", true); // no less secure than e107-specific html. 
 $page = ob_get_clean();
 
 $etag = md5($page);
diff -aruN 1.0.2.src/news.php 1.0.4.src/news.php
--- 1.0.2.src/news.php	2013-10-11 14:02:27.560000028 -0500
+++ 1.0.4.src/news.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,8 +11,8 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/news.php $
-|     $Revision: 12705 $
-|     $Id: news.php 12705 2012-05-11 02:31:43Z e107coders $
+|     $Revision: 13066 $
+|     $Id: news.php 13066 2013-01-22 20:23:45Z e107coders $
 |     $Author: e107coders $
 +----------------------------------------------------------------------------+
 */
@@ -186,7 +186,7 @@
 	{
     	$NEWSLISTTITLE = str_replace("{NEWSCATEGORY}",$tp->toHTML($category_name,FALSE,'TITLE'),$NEWSLISTTITLE);
 	}
-	$text .= "<div style='text-align:center;'><a href='".e_SELF."'>".LAN_NEWS_84."</a></div>";
+	$text .= "<div class='news-back-overview' style='text-align:center'><a href='".e_SELF."'>".LAN_NEWS_84."</a></div>";
 	ob_start();
 	$ns->tablerender($NEWSLISTTITLE, $text);
 	$cache_data = ob_get_flush();
diff -aruN 1.0.2.src/signup.php 1.0.4.src/signup.php
--- 1.0.2.src/signup.php	2013-10-11 14:02:27.561000028 -0500
+++ 1.0.4.src/signup.php	2013-09-26 16:49:50.000000000 -0500
@@ -11,7 +11,7 @@
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/signup.php $
-|     $Id: signup.php 12985 2012-09-27 08:45:46Z secretr $
+|     $Id: signup.php 13080 2013-03-09 23:49:48Z e107coders $
 +----------------------------------------------------------------------------+
 */
 
@@ -21,6 +21,13 @@
 	// set e-token so it can be processed by class2
 	$_POST['e-token'] = '';
 }
+
+if(isset($_POST['email2']) && trim($_POST['email2']) != '') // Spam Thing. 
+{
+	exit;
+}
+
+
 define("e_NOCACHE",TRUE);
 require_once("class2.php");
 $qs = explode(".", e_QUERY);
diff -aruN 1.0.2.src/top.php 1.0.4.src/top.php
--- 1.0.2.src/top.php	2013-10-11 14:02:27.561000028 -0500
+++ 1.0.4.src/top.php	2013-09-26 16:49:50.000000000 -0500
@@ -4,41 +4,51 @@
 |     e107 website system
 |
 |     Copyright (C) 2001-2002 Steve Dunstan (jalist@e107.org)
-|     Copyright (C) 2008-2010 e107 Inc (e107.org)
+|     Copyright (C) 2008-2013 e107 Inc (e107.org)
 |
 |
 |     Released under the terms and conditions of the
 |     GNU General Public License (http://gnu.org).
 |
 |     $URL: https://e107.svn.sourceforge.net/svnroot/e107/trunk/e107_0.7/top.php $
-|     $Revision: 12223 $
-|     $Id: top.php 12223 2011-05-21 08:01:08Z e107steved $
+|     $Revision: 13064 $
+|     $Id: top.php 13064 2013-01-13 12:06:12Z e107steved $
 |     $Author: e107steved $
 +----------------------------------------------------------------------------+
 */
-require_once("class2.php");
-if (!e_QUERY) {
-	$action = "top";
-	$subaction = "all";
-	$from = 0;
-	$view = 10;
-} else {
-	$tmp = explode(".", e_QUERY);
-	$from = intval($tmp[0]);
-	$action = $tmp[1];
-	$subaction = $tmp[2];
-	$view = ($tmp[3] ? intval($tmp[3]) : 10);
+require_once('class2.php');
+
+$action = 'top';
+$subaction = 'all';
+$from = 0;
+$view = 10;
+
+if (e_QUERY)
+{
+	$tmp = explode('.', e_QUERY);
+	$from = intval(varset($tmp[0], 0));
+	$action = varset($tmp[1], 'top');
+	$subaction = varset($tmp[2], 'all');
+	$view = (isset($tmp[3]) ? intval($tmp[3]) : 10);
 }
-if ($action == "top") {
-	define("e_PAGETITLE", ": ".LAN_8);
-} elseif($action == "active") {
-	define("e_PAGETITLE", ": ".LAN_7);
+if ($action == 'top')
+{
+	define('e_PAGETITLE', ': '.LAN_8);
+} 
+elseif($action == 'active') 
+{
+	define('e_PAGETITLE', ': '.LAN_7);
 }
-	
+else
+{
+	header('location:'.e_BASE.'index.php');
+	exit;
+}	
 	
 require_once(HEADERF);
-if ($action == "active") {
-	require_once(e_HANDLER."userclass_class.php");
+if ($action == 'active')
+{
+	require_once(e_HANDLER.'userclass_class.php');
 	 
 	$query = "
 			SELECT 
@@ -58,12 +68,14 @@
 			LIMIT 
 				{$from}, {$view}";
 
-	if ($sql->db_Select_gen($query)) {
+	if ($sql->db_Select_gen($query)) 
+	{
 		$text = "<div style='text-align:center'>\n<table style='width:auto' class='fborder'>\n";
-		if (!is_object($gen)) {
+		if (!is_object($gen)) 
+		{
 			$gen = new convert;
 		}
-		 
+ 
 		$text .= "<tr>
 			<td style='width:5%' class='forumheader'>&nbsp;</td>
 			<td style='width:45%' class='forumheader'>".LAN_1."</td>
@@ -73,7 +85,8 @@
 			<td style='width:25%; text-align:center' class='forumheader'>".LAN_5."</td>
 			</tr>\n";
 		 
-		while ($row = $sql->db_Fetch()) {
+		while ($row = $sql->db_Fetch()) 
+		{
 			extract($row);
 			if (check_class($forum_class)) 
 			{
@@ -108,20 +121,27 @@
 		 
 		$text .= "</table>\n</div>";
 		 
-		$ns->tablerender(LAN_7, $text, "nfp");
+		$ftotal = $sql->db_Count('forum_t', '(*)', 'WHERE `thread_parent` = 0');
+		$parms = "{$ftotal},{$view},{$from},".e_SELF.'?[FROM].active.forum.'.$view;
+		$text .= "<div class='nextprev'>".$tp->parseTemplate("{NEXTPREV={$parms}}").'</div>';
+		$ns->tablerender(LAN_7, $text, 'nfp');
+		/*
 		require_once(e_HANDLER."np_class.php");
 		$ftotal = $sql->db_Count("forum_t", "(*)", "WHERE thread_parent = 0");
 		$ix = new nextprev("top.php", $from, $view, $ftotal, "", "active.forum.".$view."");
+		*/
 	}
 }
-if ($action == "top") {
-	require_once(e_HANDLER."level_handler.php");
-	define("IMAGE_rank_main_admin_image", ($pref['rank_main_admin_image'] && file_exists(THEME."forum/".$pref['rank_main_admin_image']) ? "<img src='".THEME_ABS."forum/".$pref['rank_main_admin_image']."' alt='' />" : "<img src='".e_PLUGIN_ABS."forum/images/".IMODE."/main_admin.png' alt='' />"));
-	define("IMAGE_rank_admin_image", ($pref['rank_admin_image'] && file_exists(THEME."forum/".$pref['rank_admin_image']) ? "<img src='".THEME_ABS."forum/".$pref['rank_admin_image']."' alt='' />" : "<img src='".e_PLUGIN_ABS."forum/images/".IMODE."/admin.png' alt='' />"));
-	define("IMAGE_rank_moderator_image", ($pref['rank_moderator_image'] && file_exists(THEME."forum/".$pref['rank_moderator_image']) ? "<img src='".THEME_ABS."forum/".$pref['rank_moderator_image']."' alt='' />" : "<img src='".e_PLUGIN_ABS."forum/images/".IMODE."/moderator.png' alt='' />"));
-	 
-	if ($subaction == "forum" || $subaction == "all") {
-		$top_forum_posters = $sql->db_Select("user", "*", "`user_forums` > 0 ORDER BY user_forums DESC LIMIT ".$from.", ".$view."");
+if ($action == 'top')
+{
+	require_once(e_HANDLER.'level_handler.php');
+	define('IMAGE_rank_main_admin_image', ($pref['rank_main_admin_image'] && file_exists(THEME."forum/".$pref['rank_main_admin_image']) ? "<img src='".THEME_ABS."forum/".$pref['rank_main_admin_image']."' alt='' />" : "<img src='".e_PLUGIN_ABS."forum/images/".IMODE."/main_admin.png' alt='' />"));
+	define('IMAGE_rank_admin_image', ($pref['rank_admin_image'] && file_exists(THEME."forum/".$pref['rank_admin_image']) ? "<img src='".THEME_ABS."forum/".$pref['rank_admin_image']."' alt='' />" : "<img src='".e_PLUGIN_ABS."forum/images/".IMODE."/admin.png' alt='' />"));
+	define('IMAGE_rank_moderator_image', ($pref['rank_moderator_image'] && file_exists(THEME."forum/".$pref['rank_moderator_image']) ? "<img src='".THEME_ABS."forum/".$pref['rank_moderator_image']."' alt='' />" : "<img src='".e_PLUGIN_ABS."forum/images/".IMODE."/moderator.png' alt='' />"));
+
+	if ($subaction == 'forum' || $subaction == 'all')
+	{
+		$top_forum_posters = $sql->db_Select('user', '*', "`user_forums` > 0 ORDER BY user_forums DESC LIMIT ".$from.", ".$view."");
 		$text = "
 			<div style='text-align:center'>
 			<table style='width:95%' class='fborder'>
@@ -132,7 +152,8 @@
 			<td style='width:30%; text-align:center' class='forumheader3'>".TOP_LAN_6."</td>
 			</tr>\n";
 		$counter = 1 + $from;
-		while ($row = $sql->db_Fetch()) {
+		while ($row = $sql->db_Fetch()) 
+		{
 			extract($row);
 			$ldata = get_level($user_id, $user_forums, $user_comments, $user_chats, $user_visits, $user_join, $user_admin, $user_perms, $pref);
 			$text .= "<tr>
@@ -144,16 +165,25 @@
 			$counter++;
 		}
 		$text .= "</table>\n</div>";
+		if ($subaction == 'forum') 
+		{
+			$ftotal = $sql->db_Count('user', '(*)', 'WHERE `user_forums` > 0');
+			$parms = "{$ftotal},{$view},{$from},".e_SELF.'?[FROM].top.forum.'.$view;
+			$text .= "<div class='nextprev'>".$tp->parseTemplate("{NEXTPREV={$parms}}").'</div>';
+		}
 		$ns->tablerender(TOP_LAN_0, $text);
-		if ($subaction == "forum") {
+		/*
+		if ($subaction == 'forum')
+		{
 			require_once(e_HANDLER."np_class.php");
-			$ftotal = $sql->db_Count("user", "(*)", "WHERE `user_forums` > 0");
+			$ftotal = $sql->db_Count('user', '(*)', 'WHERE `user_forums` > 0');
 			$ix = new nextprev("top.php", $from, $view, $ftotal, "Forum Posts", "top.forum.".$view."");
-		}
+		} */
 	}
-	 
-	 
-	if ($subaction == "comment" || $subaction == "all") {
+
+
+	if ($subaction == 'comment' || $subaction == 'all')
+	{
 		$top_forum_posters = $sql->db_Select("user", "*", "`user_comments` > 0 ORDER BY user_comments DESC LIMIT 0, 10");
 		$text = "
 			<div style='text-align:center'>
@@ -180,7 +210,8 @@
 		$ns->tablerender(TOP_LAN_3, $text);
 	}
 	 
-	if ($subaction == "chat" || $subaction == "all") {
+	if ($subaction == 'chat' || $subaction == 'all') 
+	{
 		$top_forum_posters = $sql->db_Select("user", "*", "`user_chats` > 0 ORDER BY user_chats DESC LIMIT 0, 10");
 		$text = "
 			<div style='text-align:center'>
