Index: /extensions/CryptograPHP/admin.php
===================================================================
--- /extensions/CryptograPHP/admin.php	(revision 26040)
+++ /extensions/CryptograPHP/admin.php	(revision 26041)
@@ -1,4 +1,4 @@
 <?php
-if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+defined('CRYPTO_ID') or die('Hacking attempt!');
 
 global $pwg_loaded_plugins;
@@ -7,20 +7,24 @@
   'category' => isset($pwg_loaded_plugins['Comments_on_Albums']),
   'guestbook' => isset($pwg_loaded_plugins['GuestBook']),
+  'easycaptcha' => isset($pwg_loaded_plugins['EasyCaptcha']),
   );
 
-
-load_language('plugin.lang', CRYPTO_PATH);
-
+if ($loaded['easycaptcha'])
+{
+  $page['warnings'][] = l10n('We detected that EasyCaptcha plugin is available on your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.');
+}
 
 if ( isset($_POST['submit']))
-{  
+{
+  if (!isset($_POST['activate_on'])) $_POST['activate_on'] = array();
+  
   $conf['cryptographp'] = array(
     'activate_on'     => array(
-          'picture'     => in_array('picture', $_POST['activate_on']),
-          'category'    => in_array('category', $_POST['activate_on']) || !$loaded['category'],
-          'register'    => in_array('register', $_POST['activate_on']),
-          'contactform' => in_array('contactform', $_POST['activate_on']) || !$loaded['contactform'],
-          'guestbook'   => in_array('guestbook', $_POST['activate_on']) || !$loaded['guestbook'],
-          ),
+      'picture'     => in_array('picture', $_POST['activate_on']),
+      'category'    => in_array('category', $_POST['activate_on']) || !$loaded['category'],
+      'register'    => in_array('register', $_POST['activate_on']),
+      'contactform' => in_array('contactform', $_POST['activate_on']) || !$loaded['contactform'],
+      'guestbook'   => in_array('guestbook', $_POST['activate_on']) || !$loaded['guestbook'],
+      ),
     'comments_action' => $_POST['comments_action'],
     'theme'           => $_POST['theme'],
@@ -42,5 +46,5 @@
   
   conf_update_param('cryptographp', serialize($conf['cryptographp']));
-  array_push($page['infos'], l10n('Information data registered in database'));
+  $page['infos'][] = l10n('Information data registered in database');
 }
 
@@ -78,4 +82,2 @@
 $template->set_filename('plugin_admin_content', dirname(__FILE__).'/template/admin.tpl');
 $template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
-
-?>
Index: /extensions/CryptograPHP/include/category.inc.php
===================================================================
--- /extensions/CryptograPHP/include/category.inc.php	(revision 26040)
+++ /extensions/CryptograPHP/include/category.inc.php	(revision 26041)
@@ -1,4 +1,4 @@
 <?php
-if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+defined('CRYPTO_ID') or die('Hacking attempt!');
 
 include(CRYPTO_PATH.'include/common.inc.php');
@@ -29,5 +29,5 @@
   if ($securimage->check($_POST['captcha_code']) == false)
   {
-    if ($conf['cryptographp']['comments_action'] == 'reject') array_push($page['errors'], l10n('Invalid Captcha'));
+    if ($conf['cryptographp']['comments_action'] == 'reject') $page['errors'][] = l10n('Invalid Captcha');
     return ($action != 'reject') ? $conf['cryptographp']['comments_action'] : 'reject';
   }
@@ -35,4 +35,2 @@
   return $action;
 }
-
-?>
Index: /extensions/CryptograPHP/include/common.inc.php
===================================================================
--- /extensions/CryptograPHP/include/common.inc.php	(revision 26040)
+++ /extensions/CryptograPHP/include/common.inc.php	(revision 26041)
@@ -1,4 +1,4 @@
 <?php
-if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+defined('CRYPTO_ID') or die('Hacking attempt!');
 
 global $template;
@@ -18,4 +18,2 @@
 $template->set_filename('cryptographp', realpath(CRYPTO_PATH.'template/'.$conf['cryptographp']['template'].'.tpl'));
 $template->assign_var_from_handle('CRYPTOGRAPHP', 'cryptographp');
-
-?>
Index: /extensions/CryptograPHP/include/contactform.inc.php
===================================================================
--- /extensions/CryptograPHP/include/contactform.inc.php	(revision 26040)
+++ /extensions/CryptograPHP/include/contactform.inc.php	(revision 26041)
@@ -1,4 +1,4 @@
 <?php
-if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+defined('CRYPTO_ID') or die('Hacking attempt!');
 
 include(CRYPTO_PATH.'include/common.inc.php');
@@ -29,5 +29,5 @@
   if ($securimage->check($_POST['captcha_code']) == false)
   {
-    array_push($page['errors'], l10n('Invalid Captcha'));
+    $page['errors'][] = l10n('Invalid Captcha');
     return 'reject';
   }
@@ -35,4 +35,2 @@
   return $action;
 }
-
-?>
Index: /extensions/CryptograPHP/include/guestbook.inc.php
===================================================================
--- /extensions/CryptograPHP/include/guestbook.inc.php	(revision 26040)
+++ /extensions/CryptograPHP/include/guestbook.inc.php	(revision 26041)
@@ -1,4 +1,4 @@
 <?php
-if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+defined('CRYPTO_ID') or die('Hacking attempt!');
 
 include(CRYPTO_PATH.'include/common.inc.php');
@@ -29,5 +29,5 @@
   if ($securimage->check($_POST['captcha_code']) == false)
   {
-    array_push($page['errors'], l10n('Invalid Captcha'));
+    $page['errors'][] = l10n('Invalid Captcha');
     return 'reject';
   }
@@ -35,4 +35,2 @@
   return $action;
 }
-
-?>
Index: tensions/CryptograPHP/include/install.inc.php
===================================================================
--- /extensions/CryptograPHP/include/install.inc.php	(revision 26040)
+++ 	(revision )
@@ -1,68 +1,0 @@
-<?php
-defined('PHPWG_ROOT_PATH') or die('Hacking attempt!');
-
-function crypto_install() 
-{
-  global $conf, $prefixeTable;
-  
-  if (isset($conf['cryptograph_theme']))
-  {
-    pwg_query('DELETE FROM '.CONFIG_TABLE.' WHERE param="cryptographp_theme" LIMIT 1;');
-  }
-  
-  if (empty($conf['cryptographp']))
-  {
-    $crypto_default_config = serialize(array(
-      'activate_on'     => array(
-            'picture'     => true,
-            'category'    => true,
-            'register'    => true,
-            'contactform' => true,
-            'guestbook'   => true,
-            ),
-      'comments_action' => 'reject',
-      'theme'           => 'gray',
-      'captcha_type'    => 'string',
-      'case_sensitive'  => 'false',
-      'code_length'     => 6,
-      'width'           => 180, 
-      'height'          => 70,
-      'perturbation'    => 1, 
-      'image_bg_color'  => 'ffffff', 
-      'text_color'      => '8a8a8a', 
-      'num_lines'       => 2, 
-      'line_color'      => '8a8a8a', 
-      'noise_level'     => 0.1, 
-      'noise_color'     => '8a8a8a', 
-      'ttf_file'        => 'TopSecret',
-      'button_color'    => 'dark',
-      ));
-  
-    conf_update_param('cryptographp', $crypto_default_config);
-    $conf['cryptographp'] = $crypto_default_config;
-  }
-  else
-  {
-    $conf['cryptographp'] = unserialize($conf['cryptographp']);
-    
-    if (!isset($conf['cryptographp']['activate_on']))
-    {
-      $conf['cryptographp']['activate_on'] = array(
-        'picture'     => $conf['cryptographp']['comments_action'] != 'inactive',
-        'category'    => $conf['cryptographp']['comments_action'] != 'inactive',
-        'register'    => true,
-        'contactform' => true,
-        'guestbook'   => true,
-        );
-    }
-    if (!isset($conf['cryptographp']['button_color']))
-    {
-      $conf['cryptographp']['button_color'] = 'dark';
-    }
-    
-    $conf['cryptographp'] = serialize($conf['cryptographp']);
-    conf_update_param('cryptographp', $conf['cryptographp']);
-  }
-}
-
-?>
Index: /extensions/CryptograPHP/include/picture.inc.php
===================================================================
--- /extensions/CryptograPHP/include/picture.inc.php	(revision 26040)
+++ /extensions/CryptograPHP/include/picture.inc.php	(revision 26041)
@@ -1,4 +1,4 @@
 <?php
-if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+defined('CRYPTO_ID') or die('Hacking attempt!');
 
 include(CRYPTO_PATH.'include/common.inc.php');
@@ -29,5 +29,5 @@
   if ($securimage->check($_POST['captcha_code']) == false)
   {
-    if ($conf['cryptographp']['comments_action'] == 'reject') array_push($page['errors'], l10n('Invalid Captcha'));
+    if ($conf['cryptographp']['comments_action'] == 'reject') $page['errors'][] = l10n('Invalid Captcha');
     return ($action != 'reject') ? $conf['cryptographp']['comments_action'] : 'reject';
   }
@@ -35,4 +35,2 @@
   return $action;
 }
-
-?>
Index: /extensions/CryptograPHP/include/register.inc.php
===================================================================
--- /extensions/CryptograPHP/include/register.inc.php	(revision 26040)
+++ /extensions/CryptograPHP/include/register.inc.php	(revision 26041)
@@ -1,4 +1,4 @@
 <?php
-if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
+defined('CRYPTO_ID') or die('Hacking attempt!');
 
 include(CRYPTO_PATH.'include/common.inc.php');
@@ -26,9 +26,7 @@
   if ($securimage->check($_POST['captcha_code']) == false)
   {
-    array_push($errors, l10n('Invalid Captcha'));
+    $errors[] = l10n('Invalid Captcha');
   }
 
   return $errors;
 }
-
-?>
Index: /extensions/CryptograPHP/language/cs_CZ/plugin.lang.php
===================================================================
--- /extensions/CryptograPHP/language/cs_CZ/plugin.lang.php	(revision 26040)
+++ /extensions/CryptograPHP/language/cs_CZ/plugin.lang.php	(revision 26041)
@@ -33,3 +33,5 @@
 $lang['Register form'] = 'Registrační formulář';
 $lang['Button color'] = 'Barva tlačítka';
+$lang['We detected that EasyCaptcha plugin is available on your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.'] = 'Zjistili jsme, že používáte také EasyCaptcha plugin. Oba pluginy mohou být používány současně, ale nesmějí být za žádných okolností aktivovány na stejné stránce.';
+
 ?>
Index: /extensions/CryptograPHP/language/da_DK/plugin.lang.php
===================================================================
--- /extensions/CryptograPHP/language/da_DK/plugin.lang.php	(revision 26040)
+++ /extensions/CryptograPHP/language/da_DK/plugin.lang.php	(revision 26041)
@@ -52,3 +52,5 @@
 $lang['Picture comments'] = 'Billedkommentarer';
 $lang['Button color'] = 'Knapfarve';
+$lang['We detected that EasyCaptcha plugin is available on your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.'] = 'Vi har opdaget, at EasyCaptcha-plugin\'en er aktiveret i dit galleri. Begge plugin\'er kan benyttes på samme tid, men du bør under ingen omstændigheder aktivere dem begge på den samme side.';
+
 ?>
Index: /extensions/CryptograPHP/language/de_DE/plugin.lang.php
===================================================================
--- /extensions/CryptograPHP/language/de_DE/plugin.lang.php	(revision 26040)
+++ /extensions/CryptograPHP/language/de_DE/plugin.lang.php	(revision 26041)
@@ -52,3 +52,5 @@
 $lang['Register form'] = 'Registrierungs-Formular ';
 $lang['Button color'] = 'Tastenfarbe';
+$lang['We detected that EasyCaptcha plugin is available on your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.'] = 'Es wurde festgestellt, dass das EasyCaptcha Plugin in deiner Gallerie verfügbar ist. Beide Plugins können zeitgleich benutzt werden, aber auf keinen Fall dürfen beide auf der gleichen Seite aktiviert sein.';
+
 ?>
Index: /extensions/CryptograPHP/language/el_GR/plugin.lang.php
===================================================================
--- /extensions/CryptograPHP/language/el_GR/plugin.lang.php	(revision 26040)
+++ /extensions/CryptograPHP/language/el_GR/plugin.lang.php	(revision 26041)
@@ -33,3 +33,5 @@
 $lang['Register form'] = 'Φόρμα Εγγραφής';
 $lang['Button color'] = 'χρώμα κουμπιού';
+$lang['We detected that EasyCaptcha plugin is available on your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.'] = 'Διαπιστώθηκε ότι το πρόσθετο EasyCaptcha είναι διαθέσιμο στην γκαλερί σας. Και τα δύο plugins μπορούν να χρησιμοποιηθούν ταυτόχρονα, αλλά δεν πρέπει σε καμία περίπτωση να ενεργοποιηθούν και τα δύο στην ίδια σελίδα.';
+
 ?>
Index: /extensions/CryptograPHP/language/en_UK/plugin.lang.php
===================================================================
--- /extensions/CryptograPHP/language/en_UK/plugin.lang.php	(revision 26040)
+++ /extensions/CryptograPHP/language/en_UK/plugin.lang.php	(revision 26041)
@@ -34,4 +34,5 @@
 $lang['Preview'] = 'Preview';
 $lang['Tip: type "random" on a color field to have a random color'] = 'Tip: type "random" on a color field to have a random color';
+$lang['We detected that EasyCaptcha plugin is available on your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.'] = 'We detected that EasyCaptcha plugin is available in your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.';
 
 ?>
Index: /extensions/CryptograPHP/language/es_ES/plugin.lang.php
===================================================================
--- /extensions/CryptograPHP/language/es_ES/plugin.lang.php	(revision 26040)
+++ /extensions/CryptograPHP/language/es_ES/plugin.lang.php	(revision 26041)
@@ -33,3 +33,5 @@
 $lang['Register form'] = 'Formulario de registro';
 $lang['Button color'] = 'color del botón';
+$lang['We detected that EasyCaptcha plugin is available on your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.'] = 'Hemos detectado que EasyCaptcha plugin está disponible en su galería. Ambos plugins se pueden utilizar al mismo tiempo, pero no debe, bajo ninguna circunstancia activar los dos en la misma página.';
+
 ?>
Index: /extensions/CryptograPHP/language/fr_FR/plugin.lang.php
===================================================================
--- /extensions/CryptograPHP/language/fr_FR/plugin.lang.php	(revision 26040)
+++ /extensions/CryptograPHP/language/fr_FR/plugin.lang.php	(revision 26041)
@@ -34,4 +34,5 @@
 $lang['Preview'] = 'Prévisualisation';
 $lang['Tip: type "random" on a color field to have a random color'] = 'Astuce: inscrivez "random" dans un champs de couleur pour avoir une couleur aléatoire';
+$lang['We detected that EasyCaptcha plugin is available on your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.'] = 'Nous avons détecté que EasyCaptcha est activé sur votre galerie. Les deux plugins peuvent fonctionner en même temps, mais sous aucun prétexte ils ne doivent être activés sur les mêmes pages.';
 
 ?>
Index: /extensions/CryptograPHP/language/it_IT/plugin.lang.php
===================================================================
--- /extensions/CryptograPHP/language/it_IT/plugin.lang.php	(revision 26040)
+++ /extensions/CryptograPHP/language/it_IT/plugin.lang.php	(revision 26041)
@@ -33,3 +33,5 @@
 $lang['Register form'] = 'Modulo registrazione';
 $lang['Button color'] = 'Colore pulsante';
+$lang['We detected that EasyCaptcha plugin is available on your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.'] = 'Abbiamo rilevato che il plugin EasyCaptcha è disponibile nella tua galleria. Entrambi i plugin possono essere utilizzati allo stesso tempo, ma non devono in nessun caso essere attivati entrambi sulla stessa pagina.';
+
 ?>
Index: /extensions/CryptograPHP/language/lv_LV/plugin.lang.php
===================================================================
--- /extensions/CryptograPHP/language/lv_LV/plugin.lang.php	(revision 26040)
+++ /extensions/CryptograPHP/language/lv_LV/plugin.lang.php	(revision 26041)
@@ -33,3 +33,5 @@
 $lang['Register form'] = 'Reģistra forma';
 $lang['Button color'] = 'Pogas krāsa';
+$lang['We detected that EasyCaptcha plugin is available on your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.'] = 'Mēs esam konstatējuši, ka jūsu galerijā ir pieejams EasyCaptcha spraudnis. Abus spraudņus var izmantot vienlaicīgi, bet nekādā gadījumā jūs nedrikstat aktivēt abus vienā un tajā pašā lapā.';
+
 ?>
Index: /extensions/CryptograPHP/language/nl_NL/plugin.lang.php
===================================================================
--- /extensions/CryptograPHP/language/nl_NL/plugin.lang.php	(revision 26040)
+++ /extensions/CryptograPHP/language/nl_NL/plugin.lang.php	(revision 26041)
@@ -52,3 +52,5 @@
 $lang['Invalid Captcha'] = 'Ongeldige Captcha';
 $lang['Button color'] = 'Knopkleur';
+$lang['We detected that EasyCaptcha plugin is available on your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.'] = 'Geconstateerd wordt dat u ook EasyCaptcha gebruikt. Beide plugins kunnen tegelijkertijd gebruikt worden, maar kunnen beter niet op dezelfde pagina tegelijkertijd gebruikt worden.';
+
 ?>
Index: /extensions/CryptograPHP/language/pl_PL/plugin.lang.php
===================================================================
--- /extensions/CryptograPHP/language/pl_PL/plugin.lang.php	(revision 26040)
+++ /extensions/CryptograPHP/language/pl_PL/plugin.lang.php	(revision 26041)
@@ -33,3 +33,5 @@
 $lang['Register form'] = 'Formularz rejestracyjny';
 $lang['Button color'] = 'Kolor przycisku';
+$lang['We detected that EasyCaptcha plugin is available on your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.'] = 'W galerii wykryto wtyczkę EasyCaptcha. Obie wtyczki mogą być używane jednoczenie, ale pod żadnym pozorem nie na jednej stronie.';
+
 ?>
Index: /extensions/CryptograPHP/language/pt_BR/plugin.lang.php
===================================================================
--- /extensions/CryptograPHP/language/pt_BR/plugin.lang.php	(revision 26040)
+++ /extensions/CryptograPHP/language/pt_BR/plugin.lang.php	(revision 26041)
@@ -52,3 +52,5 @@
 $lang['Noise level'] = 'Nível barulhento';
 $lang['Perturbation'] = 'Pertubação';
+$lang['We detected that EasyCaptcha plugin is available on your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.'] = 'Detectamos que EasyCaptcha plugin está disponível em sua galeria. Ambos os plugins podem ser usados ​​ao mesmo tempo, mas você não deve em hipótese alguma ativar ambos na mesma página.';
+
 ?>
Index: /extensions/CryptograPHP/language/pt_PT/plugin.lang.php
===================================================================
--- /extensions/CryptograPHP/language/pt_PT/plugin.lang.php	(revision 26040)
+++ /extensions/CryptograPHP/language/pt_PT/plugin.lang.php	(revision 26041)
@@ -51,5 +51,6 @@
 $lang['Noise color'] = 'Cor do ruído ';
 $lang['Noise level'] = 'Nível de ruído';
-$lang['Perturbation'] = 'Perturbação
-';
+$lang['Perturbation'] = 'Perturbação';
+$lang['We detected that EasyCaptcha plugin is available on your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.'] = 'Detectamos que a extensão EasyCaptcha está disponível na sua galeria. Ambas as extensões podem ser usadas ​​ao mesmo tempo, mas  não deverá em nenhuma circunstância ativar ambas na mesma página ..';
+
 ?>
Index: /extensions/CryptograPHP/language/ru_RU/plugin.lang.php
===================================================================
--- /extensions/CryptograPHP/language/ru_RU/plugin.lang.php	(revision 26040)
+++ /extensions/CryptograPHP/language/ru_RU/plugin.lang.php	(revision 26041)
@@ -52,3 +52,5 @@
 $lang['Register form'] = 'Форма регистрации';
 $lang['Button color'] = 'Цвет кнопки';
+$lang['We detected that EasyCaptcha plugin is available on your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.'] = 'Мы обнаружили, что в Вашей галерее также доступен плагин EasyCaptcha. Оба плагина могут быть использованы, но Вы не должны ни при каких обстоятельствах активировать оба этих плагина на одной и той же странице.';
+
 ?>
Index: /extensions/CryptograPHP/language/sk_SK/plugin.lang.php
===================================================================
--- /extensions/CryptograPHP/language/sk_SK/plugin.lang.php	(revision 26040)
+++ /extensions/CryptograPHP/language/sk_SK/plugin.lang.php	(revision 26041)
@@ -52,3 +52,5 @@
 $lang['range:'] = 'rozsah:';
 $lang['Button color'] = 'Farba tlačidla';
+$lang['We detected that EasyCaptcha plugin is available on your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.'] = 'Zistili sme, že EasyCaptcha plugin je k dispozícii v galérii. Oba moduly je možné použiť súčasne, ale musia byť za každých okolností aktivované na rovnakej strane.';
+
 ?>
Index: /extensions/CryptograPHP/language/sv_SE/plugin.lang.php
===================================================================
--- /extensions/CryptograPHP/language/sv_SE/plugin.lang.php	(revision 26040)
+++ /extensions/CryptograPHP/language/sv_SE/plugin.lang.php	(revision 26041)
@@ -52,3 +52,5 @@
 $lang['Lines density'] = 'Rad-densitet';
 $lang['Moderate'] = 'Moderera';
+$lang['We detected that EasyCaptcha plugin is available on your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.'] = 'Vi upptäckte att EasyCaptcha-pluginet är tillgängligt i ditt galleri. Bägge plugins kan användas parallelt men du borde verkligen inte aktivera bägge på samma sida.';
+
 ?>
Index: /extensions/CryptograPHP/language/tr_TR/plugin.lang.php
===================================================================
--- /extensions/CryptograPHP/language/tr_TR/plugin.lang.php	(revision 26040)
+++ /extensions/CryptograPHP/language/tr_TR/plugin.lang.php	(revision 26041)
@@ -52,3 +52,5 @@
 $lang['Picture comments'] = 'Resim yorumları';
 $lang['Button color'] = 'Buton rengi';
+$lang['We detected that EasyCaptcha plugin is available on your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.'] = 'EasyCaptcha eklentisinin galeriniz için etkin olduğu tespit edildi. Her iki eklenti de aynı anda kullanılabilir fakat hiç bir koşulda aynı sayfada her ikisi de aktif halde olmamalıdır.';
+
 ?>
Index: /extensions/CryptograPHP/language/uk_UA/plugin.lang.php
===================================================================
--- /extensions/CryptograPHP/language/uk_UA/plugin.lang.php	(revision 26040)
+++ /extensions/CryptograPHP/language/uk_UA/plugin.lang.php	(revision 26041)
@@ -52,3 +52,5 @@
 $lang['Register form'] = 'Зареєстровано з';
 $lang['Button color'] = 'Колір кнопки';
+$lang['We detected that EasyCaptcha plugin is available on your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.'] = 'Ми виявили, що плаґін EasyCaptcha доступний у вашій галереї. Обидва плаґіна можуть бути використані одночасно, але ви не повинні ні за яких обставин активувати обидва з них на одній і тій же сторінці.';
+
 ?>
Index: /extensions/CryptograPHP/language/zh_CN/description.txt
===================================================================
--- /extensions/CryptograPHP/language/zh_CN/description.txt	(revision 26040)
+++ /extensions/CryptograPHP/language/zh_CN/description.txt	(revision 26041)
@@ -1,3 +1,3 @@
-'Crypto Captcha'（原'CryptograPHP'）通过在注册、评论界面和'ContactForm'插件中加入验证码的方式限制您相册中的垃圾信息。
+'Crypto Captcha'通过在注册、评论界面和'ContactForm'插件中加入验证码的方式限制您相册中的垃圾信息。
 其工作原理与 P@t 的插件'Captcha'一样，但它采用的是 Securimage generator (www.phpcaptcha.org) 而非 reCAPTCHA (www.google.com/recaptcha)。
 与'Comments on Albums'、'GuestBook'和'Contact Form'插件兼容。
Index: /extensions/CryptograPHP/language/zh_CN/plugin.lang.php
===================================================================
--- /extensions/CryptograPHP/language/zh_CN/plugin.lang.php	(revision 26040)
+++ /extensions/CryptograPHP/language/zh_CN/plugin.lang.php	(revision 26041)
@@ -52,3 +52,5 @@
 $lang['Noise level'] = '噪点密度';
 $lang['Perturbation'] = '扭曲度';
+$lang['We detected that EasyCaptcha plugin is available on your gallery. Both plugins can be used at the same time, but you should not under any circumstances activate both of them on the same page.'] = '发现 EasyCaptcha 插件已在图库启用，这两个插件可以同时使用，但是绝不可以在相同页面上同时启用这两个插件。';
+
 ?>
Index: /extensions/CryptograPHP/main.inc.php
===================================================================
--- /extensions/CryptograPHP/main.inc.php	(revision 26040)
+++ /extensions/CryptograPHP/main.inc.php	(revision 26041)
@@ -23,8 +23,8 @@
 }
 
-defined('CRYPTO_ID') or define('CRYPTO_ID', basename(dirname(__FILE__)));
-define('CRYPTO_PATH' , PHPWG_PLUGINS_PATH . CRYPTO_ID . '/');
-define('CRYPTO_ADMIN', get_root_url() . 'admin.php?page=plugin-' . CRYPTO_ID);
-define('CRYPTO_VERSION', 'auto');
+define('CRYPTO_ID',       basename(dirname(__FILE__)));
+define('CRYPTO_PATH' ,    PHPWG_PLUGINS_PATH . CRYPTO_ID . '/');
+define('CRYPTO_ADMIN',    get_root_url() . 'admin.php?page=plugin-' . CRYPTO_ID);
+define('CRYPTO_VERSION',  'auto');
 
 
@@ -37,6 +37,5 @@
 else
 {
-  add_event_handler('init', 'crypto_document_init');
-  add_event_handler('loc_end_section_init', 'crypto_section_init', EVENT_HANDLER_PRIORITY_NEUTRAL+30);
+  add_event_handler('loc_end_section_init', 'crypto_document_init', EVENT_HANDLER_PRIORITY_NEUTRAL+30);
 }
 
@@ -45,81 +44,57 @@
 function crypto_init()
 {
-  global $conf, $pwg_loaded_plugins;
+  global $conf;
   
-  if (
-    CRYPTO_VERSION == 'auto' or
-    $pwg_loaded_plugins[CRYPTO_ID]['version'] == 'auto' or
-    version_compare($pwg_loaded_plugins[CRYPTO_ID]['version'], CRYPTO_VERSION, '<')
-  )
-  {
-    include_once(CRYPTO_PATH . 'include/install.inc.php');
-    crypto_install();
-    
-    if ( $pwg_loaded_plugins[CRYPTO_ID]['version'] != 'auto' and CRYPTO_VERSION != 'auto' )
-    {
-      $query = '
-UPDATE '. PLUGINS_TABLE .'
-SET version = "'. CRYPTO_VERSION .'"
-WHERE id = "'. CRYPTO_ID .'"';
-      pwg_query($query);
-      
-      $pwg_loaded_plugins[CRYPTO_ID]['version'] = CRYPTO_VERSION;
-      
-      if (defined('IN_ADMIN'))
-      {
-        $_SESSION['page_infos'][] = 'Crypto Captcha updated to version '. CRYPTO_VERSION;
-      }
-    }
-  }
+  include_once(CRYPTO_PATH . 'maintain.inc.php');
+  $maintain = new CryptograPHP_maintain(CRYPTO_ID);
+  $maintain->autoUpdate(CRYPTO_VERSION, 'install');
   
+  load_language('plugin.lang', CRYPTO_PATH);
   $conf['cryptographp'] = unserialize($conf['cryptographp']);
 }
 
 
-// modules : picture comment & register
+// modules
 function crypto_document_init()
 {
   global $conf, $user;
   
-  if (!is_a_guest()) return;
+  if (!is_a_guest())
+  {
+    return;
+  }
   
-  if ( script_basename() == 'register' and $conf['cryptographp']['activate_on']['register'] )
+  if (script_basename() == 'register' and $conf['cryptographp']['activate_on']['register'])
   {
     $conf['cryptographp']['template'] = 'register';
-    include(CRYPTO_PATH.'include/register.inc.php');
+    include(CRYPTO_PATH . 'include/register.inc.php');
   }
-  else if ( script_basename() == 'picture' and $conf['cryptographp']['activate_on']['picture'] )
+  else if (script_basename() == 'picture' and $conf['cryptographp']['activate_on']['picture'])
   {
     $conf['cryptographp']['template'] = 'comment';
-    include(CRYPTO_PATH.'include/picture.inc.php');
+    include(CRYPTO_PATH . 'include/picture.inc.php');
   }
-  
-}
-
-// modules : album comment & contact & guestbook
-function crypto_section_init()
-{
-  global $conf, $pwg_loaded_plugins, $page, $user;
-  
-  if (!is_a_guest()) return;
-  
-  if (
-    script_basename() == 'index' and $conf['cryptographp']['activate_on']['category'] and 
-    isset($pwg_loaded_plugins['Comments_on_Albums']) and isset($page['section']) and 
-    $page['section'] == 'categories' and isset($page['category'])
-    ) 
+  else if (isset($page['section']))
   {
-    $conf['cryptographp']['template'] = 'comment';
-    include(CRYPTO_PATH.'include/category.inc.php');
-  }
-  else if ( isset($page['section']) and $page['section'] == 'contact' and $conf['cryptographp']['activate_on']['contactform'] ) 
-  {
-    $conf['cryptographp']['template'] = 'contactform';
-    include(CRYPTO_PATH.'include/contactform.inc.php');
-  }
-  else if ( isset($page['section']) and $page['section'] == 'guestbook' and $conf['cryptographp']['activate_on']['guestbook'] ) 
-  {
-    $conf['cryptographp']['template'] = 'guestbook';
-    include(CRYPTO_PATH.'include/guestbook.inc.php');
+    if (
+      script_basename() == 'index' &&
+      $page['section'] == 'categories' && isset($page['category']) &&
+      isset($pwg_loaded_plugins['Comments_on_Albums']) &&
+      $conf['cryptographp']['activate_on']['category']
+      )
+    {
+      $conf['cryptographp']['template'] = 'comment';
+      include(CRYPTO_PATH . 'include/category.inc.php');
+    }
+    else if ($page['section'] == 'contact' && $conf['cryptographp']['activate_on']['contactform'])
+    {
+      $conf['cryptographp']['template'] = 'contactform';
+      include(CRYPTO_PATH . 'include/contactform.inc.php');
+    }
+    else if ($page['section'] == 'guestbook' && $conf['cryptographp']['activate_on']['guestbook'])
+    {
+      $conf['cryptographp']['template'] = 'guestbook';
+      include(CRYPTO_PATH . 'include/guestbook.inc.php');
+    }
   }
 }
@@ -129,10 +104,8 @@
 function crypto_plugin_admin_menu($menu)
 {
-  array_push($menu, array(
+  $menu[] = array(
     'NAME' => 'Crypto Captcha',
     'URL' => CRYPTO_ADMIN,
-    ));
+    );
   return $menu;
 }
-
-?>
Index: /extensions/CryptograPHP/maintain.inc.php
===================================================================
--- /extensions/CryptograPHP/maintain.inc.php	(revision 26040)
+++ /extensions/CryptograPHP/maintain.inc.php	(revision 26041)
@@ -2,25 +2,87 @@
 defined('PHPWG_ROOT_PATH') or die('Hacking attempt!');
 
-defined('CRYPTO_ID') or define('CRYPTO_ID', basename(dirname(__FILE__)));
-include_once(PHPWG_PLUGINS_PATH . CRYPTO_ID . '/include/install.inc.php');
+class CryptograPHP_maintain extends PluginMaintain
+{
+  private $installed = false;
 
-function plugin_install() 
-{
-  crypto_install();
-  define('crypto_installed', true);
-}
+  function install($plugin_version, &$errors=array())
+  {
+    if (isset($conf['cryptograph_theme']))
+    {
+      conf_delete_param('cryptograph_theme');
+    }
+    
+    if (empty($conf['cryptographp']))
+    {
+      $default_config = array(
+        'activate_on'     => array(
+              'picture'     => true,
+              'category'    => true,
+              'register'    => true,
+              'contactform' => true,
+              'guestbook'   => true,
+              ),
+        'comments_action' => 'reject',
+        'theme'           => 'gray',
+        'captcha_type'    => 'string',
+        'case_sensitive'  => 'false',
+        'code_length'     => 6,
+        'width'           => 180, 
+        'height'          => 70,
+        'perturbation'    => 1, 
+        'image_bg_color'  => 'ffffff', 
+        'text_color'      => '8a8a8a', 
+        'num_lines'       => 2, 
+        'line_color'      => '8a8a8a', 
+        'noise_level'     => 0.1, 
+        'noise_color'     => '8a8a8a', 
+        'ttf_file'        => 'TopSecret',
+        'button_color'    => 'dark',
+        );
+    
+      $conf['cryptographp'] = serialize($default_config);
+      conf_update_param('cryptographp', $conf['cryptographp']);
+    }
+    else
+    {
+      $old_conf = is_string($conf['cryptographp']) ? unserialize($conf['cryptographp']) : $conf['cryptographp'];
+      
+      if (!isset($old_conf['activate_on']))
+      {
+        $old_conf['activate_on'] = array(
+          'picture'     => $old_conf['comments_action'] != 'inactive',
+          'category'    => $old_conf['comments_action'] != 'inactive',
+          'register'    => true,
+          'contactform' => true,
+          'guestbook'   => true,
+          );
+      }
+      if (!isset($old_conf['button_color']))
+      {
+        $old_conf['button_color'] = 'dark';
+      }
+      
+      $conf['cryptographp'] = serialize($old_conf);
+      conf_update_param('cryptographp', $conf['cryptographp']);
+    }
 
-function plugin_activate()
-{
-  if (!defined('crypto_installed'))
+    $this->installed = true;
+  }
+
+  function activate($plugin_version, &$errors=array())
   {
-    crypto_install();
+    if (!$this->installed)
+    {
+      $this->install($plugin_version, $errors);
+    }
+  }
+
+  function deactivate()
+  {
+  }
+
+  function uninstall()
+  {
+    conf_delete_param('cryptographp');
   }
 }
-
-function plugin_uninstall()
-{
-  pwg_query('DELETE FROM '.CONFIG_TABLE.' WHERE param="cryptographp" LIMIT 1');
-}
-
-?>
Index: /extensions/CryptograPHP/securimage/securimage_preview.php
===================================================================
--- /extensions/CryptograPHP/securimage/securimage_preview.php	(revision 26040)
+++ /extensions/CryptograPHP/securimage/securimage_preview.php	(revision 26041)
@@ -7,5 +7,5 @@
 include_once(PHPWG_ROOT_PATH.'include/common.inc.php');
 
-if (!is_admin()) die('Hacking attempt!');
+is_admin() or die('Hacking attempt!');
 
 
Index: /extensions/CryptograPHP/template/admin.tpl
===================================================================
--- /extensions/CryptograPHP/template/admin.tpl	(revision 26040)
+++ /extensions/CryptograPHP/template/admin.tpl	(revision 26041)
@@ -1,12 +1,12 @@
-{combine_css path=$CRYPTO_PATH|@cat:"template/style.css"}
-
-{combine_css path=$CRYPTO_PATH|@cat:"template/colorpicker/colorpicker.css"}
-{combine_script id="jquery.colorpicker" load="footer" path=$CRYPTO_PATH|@cat:"template/colorpicker/colorpicker.js"}
-
-{combine_css path="themes/default/js/plugins/chosen.css"}
+{combine_css path=$CRYPTO_PATH|cat:'template/style.css'}
+
+{combine_css path=$CRYPTO_PATH|cat:'template/colorpicker/colorpicker.css'}
+{combine_script id='jquery.colorpicker' load='footer' path=$CRYPTO_PATH|cat:'template/colorpicker/colorpicker.js'}
+
+{combine_css path='themes/default/js/plugins/chosen.css'}
 {combine_script id='jquery.chosen' load='footer' path='themes/default/js/plugins/chosen.jquery.min.js'}
 
 
-{footer_script}{literal}
+{footer_script}
 // colorpicker
 $('.colorpicker-input')
@@ -26,5 +26,5 @@
     }
   })
-  .bind('keyup', function(){ 
+  .bind('keyup', function() { 
     $(this).ColorPickerSetColor(this.value);
     changeColor(this, $(this).val());
@@ -39,5 +39,5 @@
   $(this).addClass('selected');
   $('input[name=button_color]').val($(this).attr('title'));
-  $('#reload').attr('src', '{/literal}{$CRYPTO_PATH}{literal}template/refresh_'+ $(this).attr('title') +'.png');
+  $('#reload').attr('src', '{$CRYPTO_PATH}template/refresh_'+ $(this).attr('title') +'.png');
 });
 
@@ -53,5 +53,7 @@
   }
   
-  $('.colorpicker-input').each(function() { changeColor(this, $(this).val()); });
+  $('.colorpicker-input').each(function() {
+    changeColor(this, $(this).val());
+  });
   $('input[name="theme"]').val($(this).attr('title'));
   changePreview();
@@ -86,5 +88,5 @@
 // multiselect
 $("select").css({
-  "width":"700px"
+  width: 300
 }).chosen({
   disable_search:true,
@@ -96,6 +98,5 @@
 }
 
-function changePreview()
-{
+function changePreview() {
   options = new Array();
   str = '';
@@ -108,5 +109,5 @@
     str+= '&' + x + '=' + options[x];
   }
-  $('#captcha').attr('src', '{/literal}{$CRYPTO_PATH}{literal}securimage/securimage_preview.php?' + new Date().getTime() + str);
+  $('#captcha').attr('src', '{$CRYPTO_PATH}securimage/securimage_preview.php?' + new Date().getTime() + str);
 }
 
@@ -115,14 +116,14 @@
   if (parseInt(color, 16) > 16777215/2) {
     $(target).css('color', '#222');
-  } else {
+  }
+  else {
     $(target).css('color', '#ddd');
   }
   $(target).css('background', '#'+color)
 }
-{/literal}
-
-var presets = {ldelim}
+
+var presets = {
 {foreach from=$PRESETS key=name item=params}
-  "{$name}" : {ldelim}
+  "{$name}" : {
   {foreach from=$params key=key item=value}
     "{$key}" : "{$value}",
@@ -136,6 +137,6 @@
 {html_style}
 {foreach from=$fonts item=font}
-@font-face {ldelim}  
-  font-family: {$font} ;  
+@font-face {  
+  font-family: '{$font}';  
   src: url({$CRYPTO_PATH}securimage/fonts/{$font}.ttf) format("truetype");  
 }
@@ -150,46 +151,46 @@
 <form method="post" class="properties">
 <fieldset>
-  <legend>{'Configuration'|@translate}</legend>
+  <legend>{'Configuration'|translate}</legend>
   
   <ul>
     <li>
-      <b>{'Activate on'|@translate}</b>
+      <b>{'Activate on'|translate}</b>
       <select name="activate_on[]" multiple>
-        <option value="picture" {if $crypto.activate_on.picture}selected{/if}>{'Picture comments'|@translate}</option>
-        {if $loaded.category}<option value="category" {if $crypto.activate_on.category}selected{/if}>{'Album comments'|@translate}</option>{/if}
-        <option value="register" {if $crypto.activate_on.register}selected{/if}>{'Register form'|@translate}</option>
-        {if $loaded.contactform}<option value="contactform" {if $crypto.activate_on.contactform}selected{/if}>{'Contact form'|@translate}</option>{/if}
-        {if $loaded.guestbook}<option value="guestbook" {if $crypto.activate_on.guestbook}selected{/if}>{'Guestbook'|@translate}</option>{/if}
+        <option value="picture" {if $crypto.activate_on.picture}selected{/if}>{'Picture comments'|translate}</option>
+        {if $loaded.category}<option value="category" {if $crypto.activate_on.category}selected{/if}>{'Album comments'|translate}</option>{/if}
+        <option value="register" {if $crypto.activate_on.register}selected{/if}>{'Register form'|translate}</option>
+        {if $loaded.contactform}<option value="contactform" {if $crypto.activate_on.contactform}selected{/if}>{'Contact form'|translate}</option>{/if}
+        {if $loaded.guestbook}<option value="guestbook" {if $crypto.activate_on.guestbook}selected{/if}>{'Guestbook'|translate}</option>{/if}
       </select>
     </li>
     <li>
-      <b>{'Comments action'|@translate}</b>
-      <label><input type="radio" name="comments_action" value="reject" {if $crypto.comments_action == 'reject'}checked="checked"{/if}> {'Reject'|@translate}</label>
-      <label><input type="radio" name="comments_action" value="moderate" {if $crypto.comments_action == 'moderate'}checked="checked"{/if}> {'Moderate'|@translate}</label>
-    </li>
-    <li>
-      <b>{'Captcha type'|@translate}</b>
-      <label><input type="radio" name="captcha_type" class="preview" value="string" {if $crypto.captcha_type == 'string'}checked="checked"{/if}> {'Random string'|@translate}</label>
-      <label><input type="radio" name="captcha_type" class="preview" value="math" {if $crypto.captcha_type == 'math'}checked="checked"{/if}> {'Simple equation'|@translate}</label>
+      <b>{'Comments action'|translate}</b>
+      <label><input type="radio" name="comments_action" value="reject" {if $crypto.comments_action == 'reject'}checked="checked"{/if}> {'Reject'|translate}</label>
+      <label><input type="radio" name="comments_action" value="moderate" {if $crypto.comments_action == 'moderate'}checked="checked"{/if}> {'Moderate'|translate}</label>
+    </li>
+    <li>
+      <b>{'Captcha type'|translate}</b>
+      <label><input type="radio" name="captcha_type" class="preview" value="string" {if $crypto.captcha_type == 'string'}checked="checked"{/if}> {'Random string'|translate}</label>
+      <label><input type="radio" name="captcha_type" class="preview" value="math" {if $crypto.captcha_type == 'math'}checked="checked"{/if}> {'Simple equation'|translate}</label>
     </li>
     <!--<li>
-      <b>{'Case sensitive'|@translate}</b>
-      <label><input type="radio" name="case_sensitive" value="false" {if $crypto.case_sensitive == 'false'}checked="checked"{/if}> {'No'|@translate}</label>
-      <label><input type="radio" name="case_sensitive" value="true" {if $crypto.case_sensitive == 'true'}checked="checked"{/if}> {'Yes'|@translate}</label>
+      <b>{'Case sensitive'|translate}</b>
+      <label><input type="radio" name="case_sensitive" value="false" {if $crypto.case_sensitive == 'false'}checked="checked"{/if}> {'No'|translate}</label>
+      <label><input type="radio" name="case_sensitive" value="true" {if $crypto.case_sensitive == 'true'}checked="checked"{/if}> {'Yes'|translate}</label>
     </li>-->
     <li>
-      <b>{'Code lenght'|@translate}</b>
+      <b>{'Code lenght'|translate}</b>
       <label><input type="text" name="code_length" class="preview" value="{$crypto.code_length}" size="6" maxlength="2"></label>
     </li>
     <li>
-      <b>{'Width'|@translate}</b>
-      <label><input type="text" name="width" class="preview" value="{$crypto.width}" size="6" maxlength="3"> {'good value:'|@translate} lenght&times;30</label>
-    </li>
-    <li>
-      <b>{'Height'|@translate}</b>
-      <label><input type="text" name="height" class="preview" value="{$crypto.height}" size="6" maxlength="3"> {'good value:'|@translate} lenght&times;12</label>
-    </li>
-    <li>
-      <b>{'Button color'|@translate}</b>
+      <b>{'Width'|translate}</b>
+      <label><input type="text" name="width" class="preview" value="{$crypto.width}" size="6" maxlength="3"> {'good value:'|translate} lenght&times;30</label>
+    </li>
+    <li>
+      <b>{'Height'|translate}</b>
+      <label><input type="text" name="height" class="preview" value="{$crypto.height}" size="6" maxlength="3"> {'good value:'|translate} lenght&times;12</label>
+    </li>
+    <li>
+      <b>{'Button color'|translate}</b>
       <a class="button {if $crypto.button_color == 'dark'}selected{/if}" title="dark"><img src="{$CRYPTO_PATH}template/refresh_dark.png" alt="dark"></a>
       <a class="button {if $crypto.button_color == 'light'}selected{/if}" title="light"><img src="{$CRYPTO_PATH}template/refresh_light.png" alt="light"></a>
@@ -197,51 +198,51 @@
     </li>
     <li>
-      <b>{'Captcha theme'|@translate}</b>
+      <b>{'Captcha theme'|translate}</b>
       {foreach from=$PRESETS key=preset item=params}
       <a class="preset {if $crypto.theme == $preset}selected{/if}" title="{$preset}"><img src="{$CRYPTO_PATH}template/presets/{$preset}.png" alt="{$preset}"></a>
       {/foreach}
       <input type="hidden" name="theme" value="{$crypto.theme}">
-      <a class="customize">{'Customize'|@translate}</a>
+      <a class="customize">{'Customize'|translate}</a>
     </li>
   </ul>
   
   <fieldset {if $crypto.theme != 'custom'}style="display:none;"{/if} id="theming">
-    <legend>{'Customize'|@translate}</legend>
+    <legend>{'Customize'|translate}</legend>
     
     <ul>
       <li>
-        <b>{'Perturbation'|@translate}</b>
-        <label><input type="text" name="perturbation" value="{$crypto.perturbation}" class="istheme" size="6" maxlength="4"> {'range:'|@translate} 0 - 1</label>
-      </li>
-      <li>
-        <b>{'Background color'|@translate}</b>
+        <b>{'Perturbation'|translate}</b>
+        <label><input type="text" name="perturbation" value="{$crypto.perturbation}" class="istheme" size="6" maxlength="4"> {'range:'|translate} 0 - 1</label>
+      </li>
+      <li>
+        <b>{'Background color'|translate}</b>
         <label><input type="text" name="image_bg_color" value="{$crypto.image_bg_color}" class="colorpicker-input istheme" size="6" maxlength="6"></label> 
-        <a class="random" title="{'random'|@translate}"><img src="{$CRYPTO_PATH}/template/arrow_switch.png"></a>
-      </li>
-      <li>
-        <b>{'Text color'|@translate}</b>
+        <a class="random" title="{'random'|translate}"><img src="{$CRYPTO_PATH}/template/arrow_switch.png"></a>
+      </li>
+      <li>
+        <b>{'Text color'|translate}</b>
         <label><input type="text" name="text_color" value="{$crypto.text_color}" class="colorpicker-input istheme" size="6" maxlength="6"></label> 
-        <a class="random" title="{'random'|@translate}"><img src="{$CRYPTO_PATH}/template/arrow_switch.png"></a>
-      </li>
-      <li>
-        <b>{'Lines density'|@translate}</b>
-        <label><input type="text" name="num_lines" value="{$crypto.num_lines}" class="istheme" size="6" maxlength="4"> {'range:'|@translate} 0 - 10</label>
-      </li>
-      <li>
-        <b>{'Lines color'|@translate}</b>
+        <a class="random" title="{'random'|translate}"><img src="{$CRYPTO_PATH}/template/arrow_switch.png"></a>
+      </li>
+      <li>
+        <b>{'Lines density'|translate}</b>
+        <label><input type="text" name="num_lines" value="{$crypto.num_lines}" class="istheme" size="6" maxlength="4"> {'range:'|translate} 0 - 10</label>
+      </li>
+      <li>
+        <b>{'Lines color'|translate}</b>
         <label><input type="text" name="line_color" value="{$crypto.line_color}" class="colorpicker-input istheme" size="6" maxlength="6"></label> 
-        <a class="random" title="{'random'|@translate}"><img src="{$CRYPTO_PATH}/template/arrow_switch.png"></a>
-      </li>
-      <li>
-        <b>{'Noise level'|@translate}</b>
-        <label><input type="text" name="noise_level" value="{$crypto.noise_level}" class="istheme" size="6" maxlength="4"> {'range:'|@translate} 0 - 10</label>
-      </li>
-      <li>
-        <b>{'Noise color'|@translate}</b>
+        <a class="random" title="{'random'|translate}"><img src="{$CRYPTO_PATH}/template/arrow_switch.png"></a>
+      </li>
+      <li>
+        <b>{'Noise level'|translate}</b>
+        <label><input type="text" name="noise_level" value="{$crypto.noise_level}" class="istheme" size="6" maxlength="4"> {'range:'|translate} 0 - 10</label>
+      </li>
+      <li>
+        <b>{'Noise color'|translate}</b>
         <label><input type="text" name="noise_color" value="{$crypto.noise_color}" class="colorpicker-input istheme" size="6" maxlength="6"></label> 
-        <a class="random" title="{'random'|@translate}"><img src="{$CRYPTO_PATH}/template/arrow_switch.png"></a>
-      </li>
-      <li>
-        <b>{'Font'|@translate}</b>
+        <a class="random" title="{'random'|translate}"><img src="{$CRYPTO_PATH}/template/arrow_switch.png"></a>
+      </li>
+      <li>
+        <b>{'Font'|translate}</b>
         {foreach from=$fonts item=font}
         <label style="font-family:{$font};" title="{$font}"><input type="radio" name="ttf_file" value="{$font}" {if $crypto.ttf_file == $font}checked="checked"{/if} class="istheme"> {$font}</label>
@@ -250,10 +251,10 @@
     </ul>
     
-    {'Tip: type "random" on a color field to have a random color'|@translate}
+    {'Tip: type "random" on a color field to have a random color'|translate}
   </fieldset>
   
   <ul style="margin-top:30px;">
     <li>
-      <b>{'Preview'|@translate}</b>
+      <b>{'Preview'|translate}</b>
       <img id="captcha" src="{$CRYPTO_PATH}securimage/securimage_show.php" alt="CAPTCHA Image">
       <a href="#" onClick="return false;"><img id="reload" src="{$CRYPTO_PATH}template/refresh_{$crypto.button_color}.png"></a>
@@ -263,5 +264,5 @@
 </fieldset>
 
-<p class="formButtons"><input class="submit" type="submit" value="{'Submit'|@translate}" name="submit"></p>
+<p class="formButtons"><input class="submit" type="submit" value="{'Submit'|translate}" name="submit"></p>
 </form>
 
Index: /extensions/CryptograPHP/template/comment.tpl
===================================================================
--- /extensions/CryptograPHP/template/comment.tpl	(revision 26040)
+++ /extensions/CryptograPHP/template/comment.tpl	(revision 26041)
@@ -1,3 +1,3 @@
-<p><label>{if $CRYPTO.captcha_type=='string'}{'Enter code'|@translate}{else}{'Solve equation'|@translate}{/if} :</label></p>
+<p><label>{if $CRYPTO.captcha_type=='string'}{'Enter code'|translate}{else}{'Solve equation'|translate}{/if} :</label></p>
 <p>
   <img id="captcha" src="{$CRYPTO_PATH}securimage/securimage_show.php" alt="CAPTCHA Image">
Index: /extensions/CryptograPHP/template/contactform.tpl
===================================================================
--- /extensions/CryptograPHP/template/contactform.tpl	(revision 26040)
+++ /extensions/CryptograPHP/template/contactform.tpl	(revision 26041)
@@ -2,5 +2,5 @@
 <tr>
   <td class="title">
-    {if $CRYPTO.captcha_type=='string'}{'Enter code'|@translate}{else}{'Solve equation'|@translate}{/if}
+    {if $CRYPTO.captcha_type=='string'}{'Enter code'|translate}{else}{'Solve equation'|translate}{/if}
   </td>
   <td>
@@ -13,4 +13,4 @@
 {footer_script}
 var captcha_code = new LiveValidation("captcha_code", {ldelim} onlyOnSubmit: true, insertAfterWhatNode: "captcha_refresh" });
-captcha_code.add(Validate.Presence, {ldelim} failureMessage: "{'Invalid Captcha'|@translate}" });
+captcha_code.add(Validate.Presence, {ldelim} failureMessage: "{'Invalid Captcha'|translate}" });
 {/footer_script}
Index: /extensions/CryptograPHP/template/guestbook.tpl
===================================================================
--- /extensions/CryptograPHP/template/guestbook.tpl	(revision 26040)
+++ /extensions/CryptograPHP/template/guestbook.tpl	(revision 26041)
@@ -3,5 +3,5 @@
 <tr>
   <td>
-    <label for="captcha">{if $CRYPTO.captcha_type=='string'}{'Enter code'|@translate}{else}{'Solve equation'|@translate}{/if}</label>
+    <label for="captcha">{if $CRYPTO.captcha_type=='string'}{'Enter code'|translate}{else}{'Solve equation'|translate}{/if}</label>
     <input type="text" name="captcha_code" id="captcha_code" style="width:{$CRYPTO.code_length}em" maxlength="{$CRYPTO.code_length}" />
   </td>
@@ -13,4 +13,4 @@
 {footer_script}
 var captcha_code = new LiveValidation("captcha_code", {ldelim} onlyOnSubmit: true });
-captcha_code.add(Validate.Presence, {ldelim} failureMessage: "{'Invalid Captcha'|@translate}" });
+captcha_code.add(Validate.Presence, {ldelim} failureMessage: "{'Invalid Captcha'|translate}" });
 {/footer_script}
Index: /extensions/CryptograPHP/template/register.tpl
===================================================================
--- /extensions/CryptograPHP/template/register.tpl	(revision 26040)
+++ /extensions/CryptograPHP/template/register.tpl	(revision 26041)
@@ -2,5 +2,5 @@
 <li>
   <span class="property">
-    <label for="captcha_code">{if $CRYPTO.captcha_type=='string'}{'Enter code'|@translate}{else}{'Solve equation'|@translate}{/if} </label>
+    <label for="captcha_code">{if $CRYPTO.captcha_type=='string'}{'Enter code'|translate}{else}{'Solve equation'|translate}{/if} </label>
   </span>
   <input type="text" id="captcha_code" name="captcha_code" style="width:{$CRYPTO.code_length}em;" maxlength="{$CRYPTO.code_length}" />
